ARC が有効になっています。
タイプ SEL のプロパティを持つクラスがあります。@property SEL mySelector;
それは合成されます:@synthesize mySelector;
次に、KVC を使用して値を割り当てようとします。
SEL someSelector = @selector(doSomething:)
NSValue* someSelectorValue = [NSValue value:someSelector withObjCType:@encode(SEL)];
[target setValue:someSelectorValue forKey:@"mySelector"];
エラーメッセージが表示されます:
[<LACMyClass 0x101b04bc0> setValue:forUndefinedKey:]:
this class is not key value coding-compliant for the key mySelector.
これは明らかに真実ではありません - クラスは KVC 準拠であり、渡す値が気に入らないだけです。 のvoid*
代わりにtype のプロパティを定義すると機能するように見えますSEL
が、それは私の要件を満たしていません。
を使用することに加えてvalue:withObjCType:
、私も試しvalueWithBytes:objCType:
てみましたvalueWithPointer:
誰か説明してくれませんか
- 何が起こっているのか、そして
- これを適切に行う方法は?