次のように、NSTimerのscheduledTimerWithTimeInterval:target:selector:userInfo:repeats:に間接ポインターを渡そうとしています。
-(void)assignResultAfterDelay:(Result **)resultPtr {
[NSTimer scheduledTimerWithTimeInterval:1000
target:self
selector:@(assignResult:)
userInfo:resultPtr // how to do this?
repeats:NO];
}
これは、(Result * __strong *)からidへのキャストのために機能しません。これにより、「IndirectポインターからObjective-Cポインターへの'id'への暗黙の変換」エラーが発生します。
(__bridge id)resultPtr
、の使用objc_unretainedPointer(resultPtr)
、またはポインタタイプの変更などのブリッジキャストのバリエーションと組み合わせは役に立ち(Result * __weak *)
ませんでした。これを行う正しい方法は何ですか?
間接ポインタを保持するラッパークラスを作成してそのインスタンスを送信できると思いますが、それは醜いようです。それを行うためのより良い方法はありますか?