Форум программистов, компьютерный форум, киберфорум
Наши страницы

Objective-C

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

@class или #import - Objective-C

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

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

В чем разница между @class и #import? - Objective-C
Всем доброго дня ! Вот у меня вопрос: в чем различие между @class и #import. @class работает быстрей, но есть случаи когда в хидер нельзя...

Ошибка no known class method for selector - Objective-C
- (void)animate:(UILabel*)label { ; ; ; ; label.alpha = 1.0; ; } Нужно в селекторе вызвать метод...

import class - ActionScript
Например: folder1->folder2->class1.as folder1->class2.as как сделать чтобы в class1 можно было использовать class2 import...

CSS - id или class с инкриментом или присвоение значений общему class\id - HTML, CSS
Добрый день. Что то и сформулировать тяжело было. Лучше на примере объясню. К примеру, у меня есть общий id "element" и у каждого свой...

Import Error: could not import module 'PySide.QtXml' - Python
Запаковал скрипт в exe. При запуске вылетает ошибка(см. скрин). Не понимаю как устранить ошибку. Может надо еще какие-то библиотеки...

Что лучше: from или import? - Python
Ни как не могу для себя решить чем лучше пользоваться, import module или from module import function Если отбросить...

3
Vorona
Peace 2 all shining faces
669 / 531 / 45
Регистрация: 05.03.2010
Сообщений: 1,283
15.09.2012, 16:09 #2
@class пишут тогда, когда вы говорите компилятору, что такой класс существует и можно использовать его имя, но сам файл не подключается
а #import пишут тогда, когда вы уже подключаете какой-то файл

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

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

Добавлено через 10 минут
Цитата Сообщение от andrei0077 Посмотреть сообщение
вроде в 90 % случаев нужно писать @class
и тут скорее-всего наоборот, вы чаще всего используете #import, потому что вам нужно знать о классе все, что он может о себе рассказать учитывая инкапсуляцию, а @class только говорит, что есть такой класс, что кстати не факт (всмысле компилятор это не проверит), потому если используете @class, убедитесь, что такой класс действительно существует
1
andrei0077
6 / 6 / 1
Регистрация: 23.06.2011
Сообщений: 92
23.09.2012, 17:27  [ТС] #3
Т.е. @class нужно писать тогда, когда нам не нужны ни свойства ни методы этого класса. А когда какое-то свойство нужно, пишем import, я правильно понимаю?
0
Vorona
Peace 2 all shining faces
669 / 531 / 45
Регистрация: 05.03.2010
Сообщений: 1,283
23.09.2012, 19:45 #4
да, главное поймите зачем это делать
1
23.09.2012, 19:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.09.2012, 19:45
Привет! Вот еще темы с ответами:

Разъясните код пжлст(выдает ошибку:cannot convert from 'class std::list<class c_bullet *,class std::allocator<class c_bullet *> >::iterator' to 'int') - C++
Есть такие строки: std::list&lt;c_bullet*&gt; Bullets; ... for(auto i = Bullets.begin(); i != Bullets.end(); /**/) В строке цикла вот...

bad class file: C:Program FilesJavajre1.5.0_02lib t.jar(java/lang/Object.class) class file has wrong version 49.0, should be 48.0 - Java
написал тестовый td_jsp.jsp фаил -&gt;&gt; &lt;html&gt; &lt;head&gt;&lt;title&gt;JSP test&lt;/title&gt;&lt;/head&gt; &lt;body&gt; &lt;p&gt;JSP test&lt;/p&gt; &lt;/body&gt; &lt;/html&gt; ...

Константы - abstract class или interface? - Java
требуется создать файл, который будет содержать только константы. сейчас это сделано как public abstract class ProjectConstants (в...

Инкапсуляция. Private или abstract class? - C#
Что все таки лучше использовать, private или наследовать abstract class? По моему мнению abstract class намного удобнее private т.к он дает...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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