Форум программистов, компьютерный форум, киберфорум
Наши страницы
Objective-C
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
andrei0077
6 / 6 / 0
Регистрация: 23.06.2011
Сообщений: 92
#1

@class или #import

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

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

В чем разница между @class и #import?
Всем доброго дня ! Вот у меня вопрос: в чем различие между @class и #import....

Ошибка no known class method for selector
- (void)animate:(UILabel*)label { ; ; ; ; label.alpha...

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

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

Для чего написано: import java.io.Serializable; public class person implements Serializable?
package com.company; import java.io.Serializable; public class person...

3
Vorona
Peace 2 all shining faces
672 / 534 / 84
Регистрация: 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 / 0
Регистрация: 23.06.2011
Сообщений: 92
23.09.2012, 17:27  [ТС] #3
Т.е. @class нужно писать тогда, когда нам не нужны ни свойства ни методы этого класса. А когда какое-то свойство нужно, пишем import, я правильно понимаю?
0
Vorona
Peace 2 all shining faces
672 / 534 / 84
Регистрация: 05.03.2010
Сообщений: 1,283
23.09.2012, 19:45 #4
да, главное поймите зачем это делать
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.09.2012, 19:45

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

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

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


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

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

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