如果我们包含#stdio.h,我会得到一些函数,比如printf,scanf。对于Objective C,以同样的方式我们应该做什么来包括NSLog,NSArray,......以及这些NSLog,NSArray的定义存储在哪里?请澄清我的困惑。
答案 0 :(得分:4)
添加到jib所写的内容:要使用这些函数,可以添加一行
#import <Foundation/Foundation.h>
位于源代码的顶部。这对应于标准C中的#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
);编译器有一个优化,使它更快。
答案 1 :(得分:3)
NSLog和NSArray都在Foundation.framework中定义。在XCode cmd中,单击符号以跳转到定义。您可以将环境变量DYLD_PRINT_LIBRARIES添加到您的应用程序,以便在应用启动时记录库加载。
答案 2 :(得分:0)
NSLog,NSArray和其他基本类都包含在Framework.h文件中。要在程序中导入所有这些类,只需添加
#import Framework\Framework.h
并为编译器留下休息。