【问题标题】:Implementing NSCoding protocol实现 NSCoding 协议
【发布时间】:2016-01-24 14:57:31
【问题描述】:

我正在做一个 obj-c 项目,我想为一个类实现 NSCoding 协议,但我做错了。代码如下所示:

#include <Foundation/Foundation.h>

class Object: NSObject, NSCoding {
    //Somecode
}

我得到错误:“基本说明符必须命名一个类”和“预期的类名”。我做错了什么?

【问题讨论】:

  • 这是 swift 还是 Objective-c?如果是swift你不应该包含,如果是objective-c,这是头文件还是实现文件?
  • 它是Objective-C,它是一个头文件。之前的代码是“class Object { //Somecode}”,没有“: NSObject, NSCoding”,效果很好。
  • 采用协议的语法是MyClass : NSObject &lt;NSCoding&gt;,你写的是如何声明继承,而ObjC不做多重继承,所以报错。
  • 我也试过这样写,然后我得到错误:“未知模板名称'NSObject'”和“使用未声明的标识符'NSCoding'”

标签: objective-c class protocols nscoding


【解决方案1】:

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

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

// method and property declarations

@end

虽然不确定如果您的类已经定义了 C++ 方法会有多大帮助,因为您需要将这些方法移植到 Objective-C 定义中。

我强烈建议您浏览我在 cmets 中发布的链接,并阅读 Apple's documentation 关于使用类和对象的内容。这将帮助您完成过渡。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多