を保持私は、非同期操作の進行中に、デリゲートを保持し、次のコードを持っていましたか?マニュアルはARC前にARC
24
A
答えて
10
なぜ非同期タスクの間、強力なivarに委譲オブジェクトを割り当てるだけではないのですか?
それともexecuteAsyncWork
3
でローカル変数を持っている。このような何か:
- (void)startAsyncWork
{
id<YourProtocol> delegate = _delegate;
dispatch_async(/* some queue */, ^{
// do work
[delegate doSomething];
}
}
ブロックは、私が時折必要に応じてきた...限り、必要に応じて
31
をデリゲートを保持します手動でオブジェクトを保持したり解放したりするために(時にはデバッグのためだけに)、次のマクロを用意しました:
#define AntiARCRetain(...) void *retainedThing = (__bridge_retained void *)__VA_ARGS__; retainedThing = retainedThing
#define AntiARCRelease(...) void *retainedThing = (__bridge void *) __VA_ARGS__; id unretainedThing = (__bridge_transfer id)retainedThing; unretainedThing = nil
これは物事が保持されるようにする、または維持呼び出すことなく、強い参照を作成するためにどの(*無効)にしてから物事をキャストする__bridge_retainedと__bridge_transferを使用して動作します。
楽しいですが、注意してください!
関連する問題
- 1. ARCかどうかARC iOS5
- 2. ARC
- 3. ARCアプリケーションに非ARCライブラリを含める?
- 4. 非ARCプロジェクトをARCに変換する
- 5. Objective-CのARC読み取り専用プロパティと前ARCにプライベートセッター実装
- 6. iOS 4.3はARC
- 7. 異なるメモリ管理ARC/no ARC
- 8. ARC、非ARC、および継承
- 9. realloc()&ARC
- 10. -fno-にObjCアークARC
- 11. NSNetServiceデリゲートとARC
- 12. ARCリーク機能
- 13. ARC変換エラープレビュー
- 14. ARCアプリのUIAlertView
- 15. Flex ANE、iOS、ARC
- 16. protobuf iOS5 ARC
- 17. jsdraw2dのArc&Circle
- 18. JSONValue ARC問題
- 19. キーチェーンのARCエラー
- 20. ARCとInterface Builder
- 21. AdWhirlとARC
- 22. 問題ARC
- 23. performSelector ARC警告
- 24. ARCとASIHTTPRequest
- 25. Objective-CのARC
- 26. ARC以外のプロジェクトにARCヘッダーを含める
- 27. ARC:コンパイラフラグを-fno-objc-arcに設定してエラーをビルドする
- 28. Xcode 4のARCプロジェクトに非ARCファイルをサブクラス化
- 29. ARC /にObjC++:にObjCコンテナ
- 30. は、IOS5のシステムサウンドをARC
ありがとうございます。それも私の最初のアイデアでした。私は別のきちんとしたトリックがあることを望んでいた;-)。 – Alexander
あり、GCDを使っています! ;-) – hypercrypt
@hypercrypt:GCDは変数をハングアップさせるための解決策ではありませんが、非同期作業を実際に行うのは特に良い方法です。 – JeremyP