Бесполезный #import в учебнике apple.dev - PullRequest
0 голосов
/ 03 сентября 2010

Я читаю учебник по основным данным Utility из документации Apple, и есть часть, которая меня немного беспокоит.

В начале «основного» вы получили:

#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>
#include <objc/objc-auto.h>

Зачем вам нужно включать Foundation.h, если он уже включен в CoreData.h? то же самое для objc-auto.h, который находится внутри Foundation.h? И почему в последней строке используется #include?

Спасибо

Ответы [ 2 ]

1 голос
/ 03 сентября 2010

На любом языке, основанном на C, рекомендуется включать то, что вы используете.В будущем по какой-либо причине заголовки могут быть изменены, и CoreData.h может больше не включать Foundation.h.

Если вы не включите то, что используете, ваша программа не скомпилируется и может статькошмар переносимости между несколькими версиями API.

#imports // are for Objective-C headers

#include // are for just C headers. 

Скорее всего, они просто пытаются научить хорошим практикам тех, кто читает учебник.

0 голосов
/ 03 сентября 2010

Зачем вам нужно включать Foundation.h, если он уже включен в CoreData.h?

Вам не нужно , но это неТакже не помешает быть явным в вашем коде.#import предотвращает его импорт в любом случае дважды.В руководстве Apple, скорее всего, просто хотелось подчеркнуть, что вы использовали некоторые функциональные возможности Foundation.

то же самое для objc-auto.h, который находится внутри Foundation.h?не думаю, что objc-auto.h включено в Foundation.h (или что-либо, включенное Foundation.h);так как вы используете функцию GC, вам придется включить этот заголовок.

И почему в последней строке используется #include?

Это идиома языка C,Стиль Apple Objective-C диктует, что заголовки Objective-C импортируются, включая заголовки C.objc-auto.h - это код C.Вы можете импортировать его, если хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...