0

Objective-C にプロトコルがあります。別のクラスで、このプロトコルを実装するオブジェクトを NSMutableDictionary に追加しようとしています。

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

これにより、「間接ポインターから 'id' への Objective-C ポインターへの暗黙的な変換は、ARC では許可されていません」というエラーが表示されます。

これどうやってするの?

これは Java から来ています。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 に答える