将协议添加到NSDictionary

时间:2013-03-17 18:52:50

标签: objective-c nsmutabledictionary

我在Objective-C中有一个协议。我在另一个类中尝试将实现此协议的对象添加到NSMutableDictionary。

- (void) addValue:(NSString*)myString withObject:(id<MyProtocol>*)protocolThing
{
    [dictionary insertValue:protocolThing inPropertyWithKey:myString];
}

这给了我一个错误,说“使用ARC不允许将指向Objective-C指针的间接指针隐式转换为'id'”

我该怎么做?

这来自Java,我可以在其中声明一个接口,然后将实现该接口的对象视为常规对象,然后将它们添加到HashMaps中。

2 个答案:

答案 0 :(得分:1)

您的问题是id<MyProtocol>已经是指针类型。将您的签名更改为

- (void) addValue:(NSString*)myString withObject:(id<MyProtocol>)protocolThing 

它会正常工作。

答案 1 :(得分:0)

使用id时,请勿使用*

使用此:

- (void) addValue:(NSString*)myString withObject:(id<MyProtocol>)protocolThing