在子类化 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框架的NSObjectclass,所以你不能继承[=13]的其他classes =] 框架.

同时

#import <Foundation/Foundation.h>
  @interface Card : NSObject

此代码允许您在导入整个框架时继承框架提供的任何 class,如 NSProxyNSRange 等。

希望对您有所帮助....:)

区别很简单

当您使用时:

#import <Foundation/NSObject.h>

它只会导入 Foundation 框架的 NSObject header 文件。

#import <Foundation/Foundation.h>

所有框架都有一个主 header 文件,其中包括该特定框架的所有 public header。通常这个主 header 文件命名约定类似于 FrameworkName.h ,因此对于 Foundation 框架它将是 Foundation.h 并且它导入所有其他 public header 文件基础框架。因此,如果您包含它,则无需从该框架导入任何其他 class header。