В дополнение к тому, что написал 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
); у компилятора есть оптимизация, которая ускоряет его работу.