基础头而不是Objective-c类的可可头(NSObject子类)

时间:2011-04-24 09:30:51

标签: objective-c cocoa macos xcode4

在xcode 4中,当我尝试创建一个类时,例如使用Mac OS X模板的“ABClass”,创建文件时的最终结果是:

//header
#import <Foundation/Foundation.h>


@interface DBFTimer : NSObject {
@private

}

@end

和另一个文件

//.m file
#import "DBFTimer.h"


@implementation DBFTimer

- (id)init
{
self = [super init];
if (self) {
    // Initialization code here.
}

return self;
}

- (void)dealloc
{
[super dealloc];
}

@end
这是一个错误吗?什么是解决方案? (运行Xcode 4 Build 4A304a)

编辑:好的,我现在理解为什么,因为这是NSObject的子类,因此只需要基础标题。

2 个答案:

答案 0 :(得分:3)

这是Cocoa和Cocoa Touch的有效类。我相信Xcode的最新版本决定是根据你指定为超类的内容导入Cocoa / Cocoa.h或Foundation / Foundation.h。如果您创建的类继承自NSObject,则无需单独导入整个Cocoa - Foundation。

答案 1 :(得分:0)

您发布的示例是完全有效的Mac OS X Cocoa类。 (即:那个类与iOS / Cocoa Touch无关。)

关于使用<Foundation/Foundation.h>对iOS的评论 - 情况并非如此 - 如果您查看<Cocoa/Cocoa.h>内部,您会发现它实际上包含基础标题本身以及其他诸如CoreData等项目