セレクタをNSMutableArrayに追加したいと思います。しかし、それらは不透明な型でオブジェクトがないので、うまくいかないでしょうか?私が使用できるラッパーオブジェクトはありますか?または私は自分自身を作成する必要がありますか?SELのラッパーオブジェクトはありますか?
4
A
答えて
5
あなたはアレイセレクタのNSStringの名前を格納し、格納された文字列からセレクタを生成する
SEL mySelector = NSSelectorFromString([selectorArray objectAtIndex:0]);
を使用することができます。
また、あなたはこのNSInvocationオブジェクトは、配列に格納され、後に起動することができます
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[self methodSignatureForSelector:mySelector]];
[invocation setTarget:self];
[invocation setSelector:mySelector];
[invocation setArgument:&arg atIndex:2];
[invocation retainArguments];
のようなものを使用してNSInvocationとしてセレクタをパッケージ化することができます。
9
あなたは次のようにNSValue
インスタンスでそれをラップすることができます:
SEL mySelector = @selector(performSomething:);
NSValue *value = [NSValue value:&mySelector withObjCType:@encode(SEL)];
をして、あなたのNSMutableArray
インスタンスに値を追加します。
2
NSValue valueWithPointer/pointerValueも同様に機能します。
NSStringFromSelectorアプローチを使用して、配列をシリアル化できない(つまり、ファイルに書き込むことができない)ことがわかっているだけです。私はNSInvocationを使ったことがない - - おかげ
id selWrapper1 = [NSValue valueWithPointer:_cmd];
id selWrapper2 = [NSValue valueWithPointer:@selector(viewDidLoad)];
id selWrapper3 = [NSValue valueWithPointer:@selector(setObject:forKey:)];
NSString *myProperty = @"frame";
NSString *propertySetter = [NSString stringWithFormat:@"set%@%@:",
[[myProperty substringToIndex:1]uppercaseString],
[myProperty substringFromIndex:1]];
id selWrapper4 = [NSValue valueWithPointer:NSSelectorFromString(propertySetter)];
NSArray *array = [NSArray arrayWithObjects:
selWrapper1,
selWrapper2,
selWrapper3,
selWrapper4, nil];
SEL theCmd1 = [[array objectAtIndex:0] pointerValue];
SEL theCmd2 = [[array objectAtIndex:1] pointerValue];
SEL theCmd3 = [[array objectAtIndex:2] pointerValue];
SEL theCmd4 = [[array objectAtIndex:3] pointerValue];
関連する問題
- 1. SELアクションを印刷する方法はありますか?
- 2. void *をSELにキャストする方法はありません
- 3. タイプ 'SEL'から 'SEL'へのキャストは非推奨です。代わりにsel_getNameを使用してください
- 4. カスタムNSURLConnectionラッパーオブジェクトの所有権を保持する必要はありますか? (ARC環境で)
- 5. ラッパーオブジェクトから取得したデータオブジェクトのリストを返す汎用メソッドを書く必要があります。
- 6. Javascriptでラッパーオブジェクトを書く
- 7. REST:クライアントがPOSTを通じてラッパーオブジェクトを渡すことはできますか?
- 8. Python Selを使用してEbayにログイン
- 9. Ninject&C#でオブジェクトをラッパーオブジェクトに変換するには?
- 10. "SEL"と "id"をNSStringに変換するには?
- 11. jQuery:フィールド/メソッドをjQueryラッパーオブジェクトに添付することは可能ですか?
- 12. in = 1、sel = 0のときにDMux.hdlが失敗する
- 13. のIPMItoolのSELコマンドでは、R610の出力に関する詳細情報
- 14. 別のクラスメソッドへのSEL引数としてのメソッドの転送
- 15. メインはありませんがメインはありますか?
- 16. は、私はちょうどそれを保存する必要があり、私は、私はセレクタが私のメソッドに渡され得るときSEL
- 17. フラッシュオンロードエラーイベントはありますか?
- 18. .innerXMLはありますか?
- 19. シェルシミュレータはありますか
- 20. hgignore.ioはありますか?
- 21. フォトエディタプラグインはありますか?
- 22. プロパティはありますか?
- 23. データウェアハウスフレームワークはありますか?
- 24. ローカルドキュメントビューアはありますか?
- 25. カスタムドメインプラグインはありますか?
- 26. メモリリークはありますか?
- 27. オープンソースソーシャルネットワーキングクライアントアンドロイドアプリはありますか
- 28. バイナリシリアライザはありますか?
- 29. インデントエラーはありますか?
- 30. オープンソースアニメーションライブラリはありますか?
興味深い:
これらはNSValueオブジェクトにセレクタを置くのすべての有効な方法です! –