我在Apples文档中读到(正如我所料)NSDictionary不仅仅限于键的字符串。这里还有一篇帖子确认可以使用套装。我想使用协议对象,但它没有发生。我将initWithObjectsAndKeys作为密钥传递给@protocol(MyGreatProtocol)。编译,但我得到一个运行时错误,说“对象[协议对象]没有实现其他东西 - 前面的麻烦”然后另一个错误消息说“你看,我说它会导致问题。我拯救了这个!“
好的,第二个的措辞可能略有不同,但是现在对不起,并且想要在我真正回到它之前尝试澄清它。希望至少有人会得到我的问题的主旨。
也许这就是我引用协议的方式?我玩过替代品而没有成功。并且@protocol(Blah)返回一个指针?所以无法理解它为什么不起作用。
答案 0 :(得分:5)
如果您希望将协议名称存储在字典中,则可以使用函数NSStringFromProtocol
和NSProtocolFromString
。 NSStringFromProtocol
将返回一个可用作键的字符串对象,而NSProtocolFromString
则会反过来。
字典中的键对象必须符合NSCopying
协议,因为键必须在逻辑上不可变。