0

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

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

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

我怎样才能做到这一点?

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

4

2 回答 2

1

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

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

它会正常工作。

于 2013-03-17T18:54:14.973 回答
0

使用id时不要使用 *

用这个:

- (void) addValue:(NSString*)myString withObject:(id<MyProtocol>)protocolThing
于 2013-03-17T18:54:46.210 回答