В Objective C, где хранятся предопределенные классы? - PullRequest
0 голосов
/ 25 января 2010

В C, если мы включаем # stdio.h, мы получаем некоторые функции, такие как printf, scanf. Таким же образом для Objective C, что мы должны сделать, чтобы включить NSLog, NSArray, ... и где хранятся определения этих NSLog, NSArray? Пожалуйста, проясните мою путаницу.

Ответы [ 3 ]

4 голосов
/ 25 января 2010

В дополнение к тому, что написал jib: чтобы использовать эти функции, нужно поставить строку

#import <Foundation/Foundation.h>

вверху исходного кода. Это соответствует #include <stdio.h> в стандартном С. В OS X

#import <FirstPart/SecondPart.h>

читает файл заголовка в FirstPart.framework где-то в пути поиска в структуре (обычно /System/Library/Frameworks), а затем SecondPart.h ищется внутри FirstPart.framework/Headers/. Так, в случае #import <Foundation/Foundation.h>, файл находится в /System/Library/Frameworks/Foundation.framework/Headers/Foundation.h. Теперь, если вы откроете этот файл, вы увидите, что у него просто есть много других #import, как в:

#import <Foundation/NSObjCRuntime.h>
#import <Foundation/NSArray.h>
#import <Foundation/NSAutoreleasePool.h>
....

и реальные определения находятся в этих файлах. В общем, вы не должны импортировать эти отдельные заголовки, а должны просто импортировать основной заголовок (в данном случае Foundation/Foundation.h); у компилятора есть оптимизация, которая ускоряет его работу.

3 голосов
/ 25 января 2010

NSLog и NSArray определены в Foundation.framework. В XCode cmd-клик по символу, чтобы перейти к определению. Вы можете добавить переменную окружения DYLD_PRINT_LIBRARIES в свое приложение, чтобы регистрировать загрузки библиотеки при запуске приложения.

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

NSLog, NSArray и другие базовые классы включены в файл Framework.h. Чтобы импортировать все эти классы в вашу программу, просто добавьте

#import Framework\Framework.h и оставь отдых для компилятора.

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