2016-01-24 130 views
-1

我正在研究一个obj-c项目,我想为一个类实现NSCoding协议,但我无法正确理解它。代码如下所示:实现NSCoding协议

#include <Foundation/Foundation.h> 

class Object: NSObject, NSCoding { 
    //Somecode 
} 

而我得到的错误:“基地符必须命名类”和“预期类名”。我究竟做错了什么?

+3

这是快速还是Objective-c?如果它是快速的,你不应该包含,如果它是objective-c这是一个头文件或实现文件? –

+2

@DanF我认为它是Objective-C++,因为'class'不会产生任何错误 – Cristik

+2

@ user3612623 NSObject和NSCoding是'Objective-C'类,而你​​的代码似乎声明了一个C++类,你可以不从Objective-C继承C++类。 – Cristik

回答

2

您声明的是C++类,而不是Objective-C之一,并且不能从一种语言继承到另一种语言。你需要你的类声明更改为类似

@interface Object: NSObject <NSCoding> { 
    // iVar declarations 
} 

// method and property declarations 

@end 

虽然不知道有多少它将帮助,如果你的类已经定义了C++方法,因为你需要这些端口一个Objective-C定义。

我强烈建议您仔细阅读我在我的评论中发布的链接,并阅读Apple's documentation关于使用类和对象的链接。这将帮助您完成转换。