在子类化 NSObject 时,导入 "Foundation.h" 或 "NSObject.h" 有什么区别?
When subclassing NSObject, what difference does it make to import "Foundation.h" or "NSObject.h"?
这里我们看到 NSObject
的相同子类,每个子类都使用不同的 #import
语句。这对我的子类有什么区别(如果有的话)吗?这对我最终编译的程序有何影响(如果有的话)?
#import <Foundation/NSObject.h>
@interface Card : NSObject
#import <Foundation/Foundation.h>
@interface Card : NSObject
#import <Foundation/NSObject.h>
@interface Card : NSObject
在这段代码中,你只导入了Foundation
框架的NSObject
class,所以你不能继承[=13]的其他classes =] 框架.
同时
#import <Foundation/Foundation.h>
@interface Card : NSObject
此代码允许您在导入整个框架时继承框架提供的任何 class,如 NSProxy
、NSRange
等。
希望对您有所帮助....:)
区别很简单
当您使用时:
#import <Foundation/NSObject.h>
它只会导入 Foundation 框架的 NSObject header 文件。
#import <Foundation/Foundation.h>
所有框架都有一个主 header 文件,其中包括该特定框架的所有 public header。通常这个主 header 文件命名约定类似于 FrameworkName.h ,因此对于 Foundation 框架它将是 Foundation.h
并且它导入所有其他 public header 文件基础框架。因此,如果您包含它,则无需从该框架导入任何其他 class header。
这里我们看到 NSObject
的相同子类,每个子类都使用不同的 #import
语句。这对我的子类有什么区别(如果有的话)吗?这对我最终编译的程序有何影响(如果有的话)?
#import <Foundation/NSObject.h>
@interface Card : NSObject
#import <Foundation/Foundation.h>
@interface Card : NSObject
#import <Foundation/NSObject.h>
@interface Card : NSObject
在这段代码中,你只导入了Foundation
框架的NSObject
class,所以你不能继承[=13]的其他classes =] 框架.
同时
#import <Foundation/Foundation.h>
@interface Card : NSObject
此代码允许您在导入整个框架时继承框架提供的任何 class,如 NSProxy
、NSRange
等。
希望对您有所帮助....:)
区别很简单
当您使用时:
#import <Foundation/NSObject.h>
它只会导入 Foundation 框架的 NSObject header 文件。
#import <Foundation/Foundation.h>
所有框架都有一个主 header 文件,其中包括该特定框架的所有 public header。通常这个主 header 文件命名约定类似于 FrameworkName.h ,因此对于 Foundation 框架它将是 Foundation.h
并且它导入所有其他 public header 文件基础框架。因此,如果您包含它,则无需从该框架导入任何其他 class header。