Форум программистов, компьютерный форум CyberForum.ru

Objective-C

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.86
andrei0077
6 / 6 / 1
Регистрация: 23.06.2011
Сообщений: 92
#1

@class или #import - Objective-C

15.09.2012, 15:01. Просмотров 2803. Ответов 3
Метки нет (Все метки)

Добрый день! Хочу понять, в каких случаях нужно писать @class , а в каких #import ? Почитал иностранные форумы, вроде в 90 % случаев нужно писать @class. Но в каких именно случаях , я не понял.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.09.2012, 15:01     @class или #import
Посмотрите здесь:

В чем разница между @class и #import? Objective-C
Ошибка no known class method for selector Objective-C
Не создается объект. Ошибка "autorelease called without pool for object of class" Objective-C

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vorona
Peace 2 all shining faces
666 / 528 / 44
Регистрация: 05.03.2010
Сообщений: 1,271
15.09.2012, 16:09     @class или #import #2
@class пишут тогда, когда вы говорите компилятору, что такой класс существует и можно использовать его имя, но сам файл не подключается
а #import пишут тогда, когда вы уже подключаете какой-то файл

полезно использовать @class в таких ситуациях, когда файлы импортируют друг дружку, в таком случае они могут неправильно скомпилироваться
вот к примеру, когда вы используете делегацию, вы описываете интерфейс-делегат и в нем указываете, что объект такого-то типа Aaa будет передан в качестве аргумента некий в метод. Для этого вы должны импортировать файл, где описан класс Aaa, но вместо этого вы используете @class, потому что в интерфейсе Aaa, где будет использоваться интерфейс-делегат вам нужно будет его (интерфейс-делегат) импортировать.
И получается, что они импортируют друг дружку. В такой ситуации используется @class там, где вам не нужно знать подробности о классе, а просто указать его имя, а #import уже там, где вам нужно будет стучать в его методы и обращаться к его свойствам

более подробно можно почитать в документации

Добавлено через 10 минут
Цитата Сообщение от andrei0077 Посмотреть сообщение
вроде в 90 % случаев нужно писать @class
и тут скорее-всего наоборот, вы чаще всего используете #import, потому что вам нужно знать о классе все, что он может о себе рассказать учитывая инкапсуляцию, а @class только говорит, что есть такой класс, что кстати не факт (всмысле компилятор это не проверит), потому если используете @class, убедитесь, что такой класс действительно существует
andrei0077
6 / 6 / 1
Регистрация: 23.06.2011
Сообщений: 92
23.09.2012, 17:27  [ТС]     @class или #import #3
Т.е. @class нужно писать тогда, когда нам не нужны ни свойства ни методы этого класса. А когда какое-то свойство нужно, пишем import, я правильно понимаю?
Vorona
Peace 2 all shining faces
666 / 528 / 44
Регистрация: 05.03.2010
Сообщений: 1,271
23.09.2012, 19:45     @class или #import #4
да, главное поймите зачем это делать
Yandex
Объявления
23.09.2012, 19:45     @class или #import
Ответ Создать тему
Опции темы

Текущее время: 13:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru