2013-09-30 5 views
3

Новый синтаксис в Objective-C в Xcode 5 - это @import для импорта рамки.Объектив C @import для модулей заменяет #import?

Подробнее см. question. Преимущество заключается в том, что вам не нужно включать фреймворк в проект, избегая ошибок компоновщика, вам не нужно добавлять кавычки и .h только к имени фреймворка, это быстрее для предварительно скомпилированных заголовков, и у вас есть пространство имен, которое защищает вас от случайного переименования символа. Все приятные дополнения.

На мой вопрос, для ваших собственных файлов, например MyFancyViewController.h, продолжаете ли вы использовать #import, или же @import полностью заменит его? Кроме того, могу ли я легко определить свои собственные модули? Просто выглядит более грязным, имея оба синтаксиса в одном файле.

+1

проверить это [http://stackoverflow.com/questions/18947516/import-vs-import-ios-7 ] –

ответ

6

для вас, включая ваши файлы проектов, вы продолжаете использовать #import, или @import полностью замените его?

@import, до сих пор, это только для рамок Apple, поэтому на момент написания вам все равно придется использовать #import что-нибудь еще.
Хорошей новостью является то, что если вы выберете, любой #import будет неявно заменен для вас компилятором, поэтому вам не нужно преобразовывать ваш предыдущий код в пользу модулей.

Кроме того, могу ли я легко определить свои собственные модули?

Да и нет.
Да, это легко, но ...
... нет, вы не можете, так как эта функция в настоящее время не поддерживается для каркасов, отличных от Apple.

Чтобы определить свой собственный модуль - если бы вы могли - вы должны сделать:

export MyAwesomeModule: 
public: 
    // methods and whatever you want to export 
+0

Хороший ответ! Как обычно;) – HAS

+2

Путем создания собственных модулей используется [карты модулей] (http://clang.llvm.org/docs/Modules.html#module-map-language). Я на самом деле не пробовал, но вы должны использовать это, чтобы создавать свои собственные модули. – bames53

2

@import предназначено только для официальных рамок. Для MyFancyViewController.h продолжать использовать #import.

+4

В то время как '@ import' удобен, Xcode автоматически преобразует любые' # импорта' фреймворков Apple в '@ import' во время компиляции в любом случае - так что вам не нужно использовать ключевое слово' @ import' и все равно получать выгоды. – Ephemera

+0

Он не столько преобразует его, сколько причину #import вести себя как @import - ваши файлы остаются неизменными. Обратите внимание, что это также возможно только для новых проектов. Для существующих проектов включите * Включить модули * в настройках сборки. – rickster

+1

С iOS 8 кажется, что создание собственных фреймворков возможно, поэтому использование @import будет работать для вашего собственного кода и будет поощряться. – possen