我可以将协议对象用作NSDictionary中的键吗?

时间:2010-08-18 09:44:48

标签: objective-c cocoa protocols nsdictionary

我在Apples文档中读到(正如我所料)NSDictionary不仅仅限于键的字符串。这里还有一篇帖子确认可以使用套装。我想使用协议对象,但它没有发生。我将initWithObjectsAndKeys作为密钥传递给@protocol(MyGreatProtocol)。编译,但我得到一个运行时错误,说“对象[协议对象]没有实现其他东西 - 前面的麻烦”然后另一个错误消息说“你看,我说它会导致问题。我拯救了这个!“

好的,第二个的措辞可能略有不同,但是现在对不起,并且想要在我真正回到它之前尝试澄清它。希望至少有人会得到我的问题的主旨。

也许这就是我引用协议的方式?我玩过替代品而没有成功。并且@protocol(Blah)返回一个指针?所以无法理解它为什么不起作用。

1 个答案:

答案 0 :(得分:5)

如果您希望将协议名称存储在字典中,则可以使用函数NSStringFromProtocolNSProtocolFromStringNSStringFromProtocol将返回一个可用作键的字符串对象,而NSProtocolFromString则会反过来。

字典中的键对象必须符合NSCopying协议,因为键必须在逻辑上不可变。