找不到'NSKeyValueObserving'的协议声明。但为什么?

时间:2011-08-13 09:52:28

标签: iphone protocols

@interface ThreadsViewController : UIViewController <NSKeyValueObserving>
{
}   

错误:找不到'NSKeyValueObserving'的协议声明。

我正在使用Foundation框架。为什么我有这个错误?

3 个答案:

答案 0 :(得分:4)

NSKeyValueObservinginformal protocol

  

非正式协议是NSObject上的一个类别,隐含地使得几乎所有对象都是该协议的采用者。 (......)非正式议定书中方法的实施是可选的。在调用方法之前,调用对象检查目标对象是否实现它。

您不能使用尖括号语法(即正式协议)采用非正式协议。使用非正式协议,您只需实现协议方法。您尝试符合NSKeyValueObserving块中的协议@interface

@interface ThreadsViewController : UIViewController <NSKeyValueObserving>

是编译器抱怨的原因。

来自Protocols

  

作为非正式的,在类别中声明的协议不会得到太多的语言支持。在编译时没有类型检查,也没有在运行时检查以查看对象是否符合协议。

答案 1 :(得分:0)

您应该查看NSKeyValueObserving的文档。在那里你可以找到最顶层的框架所在的位置。只需确认您在项目中包含该框架。

答案 2 :(得分:0)

您确定FoundationFramework已添加到您的项目中吗?如果没有,请添加它。