在Objective C中,存储预定义的类?

时间:2010-01-25 14:14:30

标签: c objective-c

如果我们包含#stdio.h,我会得到一些函数,比如printf,scanf。对于Objective C,以同样的方式我们应该做什么来包括NSLog,NSArray,......以及这些NSLog,NSArray的定义存储在哪里?请澄清我的困惑。

3 个答案:

答案 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 并为编译器留下休息。