Может и как можно спросить об этом вопросе и каковы конкретные рекомендации?В чем разница между #import "" в файлах .h и .m?
ответ
The (может быть упрощенная) версия выглядит следующим образом:
Если импортировать файл заголовок/интерфейс, это как в том числе и весь другой файл в этом месте. Таким образом, как правило, весь ваш код интерфейса известен в этом месте. Когда вы работаете с некоторыми классами/объектами, компилятор должен знать, что они собой представляют и как они называются точно: какие аргументы/параметры нужны методам, что возвращают методы? Чтобы ответить на эти вопросы, заголовочные файлы обычно включаются в файл immentmentation (.m).
Поскольку реализация импортирует собственный заголовочный файл, вы можете часто помещать туда другие импортеры. Но когда вам нужен импорт в файле заголовка? Когда вы объявляете свой интерфейс, вы часто упоминаете другие типы/классы, то есть вы говорите @proerty (strong) SomeClass *element;
. Теперь компилятор должен знать что-то о SomeClass, но не все. Если компилятор знает, что это другой класс, все будет нормально на на этот раз. В файле заголовка больше информации не требуется, поэтому может быть достаточно «прямого объявления» @class SomeClass
. Импортирует полный файл заголовка для вашего другого класса.
Итак, где недостаток импорта? В основном есть два аргумента: время цикла компиляции и импорт. Рассмотрим небольшой пример - всякий раз, когда изменяется SomeClass.h, все, что включает его, также необходимо перекомпилировать. Это легко каскадирует через полный код. Кроме того, очевидно, что любой код, который импортирует ваш файл заголовка, импортирует все их импорт и т. Д. Аргументы работают так. A.h импортирует B.h, B.h импортирует A.h. В зависимости от того, что в них, нужно знать перед другим ...
(Я хотел бы упомянуть, что проблемы немного более расслаблены с использованием последних компиляторов, но основная аргументация по-прежнему сохраняется).
Некоторые более Примечания: @class вперед заявление может быть необходимо, когда вы объявляете два типа, которые связаны друг с другом, то есть протокол, который использует определенный класс, который Вы заявляете чуть ниже:
@class SomeClass;
@protocol SomeProtocol
-(void)doSomethingWith:(SomeClass *)object;
@end;
@interface SomeClass
@end
Переслать объявление Безразлично 't работать для протоколов, реализуемых классом или родительских классов.
Большое спасибо за ваш ответ! и можете ли вы говорить о большей разнице между компиляцией и запуском в этом вопросе? –
Это все об источнике и компиляции. Это никак не повлияет на запущенную программу. – Eiko
- 1. Что такое #import и @class и почему они находятся в файлах .h и .m?
- 2. Два интерфейса в файлах * .h и * .m
- 3. В чем разница между import numpy и import math
- 4. В чем разница между #import и наследованием?
- 5. разница между определением @interface в .h и .m файл
- 6. В чем разница между css @import и SASS/SCSS @import?
- 7. О файлах .h и .m (как управлять)
- 8. #import iAd в .m вместо .h
- 9. В чем разница между типами h: commandbutton?
- 10. Как создать категории в отдельных файлах .h и .m?
- 11. В чем разница между #import и #include в C?
- 12. import modulname-Swift.h работает в .m, но не в .h файлах
- 13. В чем разница между^M, $ и \ n (newline) в Python?
- 14. В чем разница между файлами .m и .mat в MATLAB
- 15. В чем разница между {{}} и {!! !!} в файлах laravel blade?
- 16. В чем разница между ключом и значением в html-файлах?
- 17. В чем разница между xsd: include и xsd: import?
- 18. В чем разница между .cpp-файлом и файлом .h?
- 19. В чем разница между .h (заголовочный файл) и .cpp-файлом?
- 20. В чем разница между H.264 и x.264?
- 21. В чем разница между p: commandlink и h: commandlink?
- 22. В чем разница между DAX и Power Query (или M)?
- 23. В чем разница между pip и python2 -m pip?
- 24. В чем разница между `uname -a` и` uname -m`
- 25. Objective C реализация controlTextDidChange: в .h и .m файлах
- 26. Разница между `import from` и` import require` в TypeScript
- 27. разница между $ {CDR (start)} и $ {STRFTIME ($ {EPOCH} ,,% Y-% m-% d% H:% M:% S)} в звездочке
- 28. Импорт в .h по сравнению с .m
- 29. Разница между System.import() и import()?
- 30. Вы помещаете #import s в файлы .h или .m?
Вопрос не ясен. Вы спрашиваете разницу между использованием '@ class' и' # import' в файле заголовка? – trojanfoe
Не только, можете ли вы подробнее объяснить? –
У вас уже есть ответ, который выглядит довольно полным. – trojanfoe