複数のView Controllerを持つIOSプロジェクト(ARCが無効)があります。特定のコントローラーの 1 つが MyClass 型のメンバー オブジェクトを初期化しますが、ビュー コントローラーが閉じられると、スレッドを使用して (dispatch-async を使用して) オブジェクトのクリーンアップ メソッドを呼び出して、時間のかかる操作を行います。オブジェクトのメイン キューで [自己解放] を実行することで完了します。これは良い習慣ですか、エラーが発生しますか? 以下は、私が行っていることと同様の例です。
@implementation ViewController
- (void)viewDidLoad
{
myObj = [[MyClass alloc] init];
}
-(void)viewWillDisappear
{
[myObj cleanup];
}
@end
//myClass
@implementation MyClass
- (void)cleanup()
{
dispatch_queue_t myQueue = dispatch_queue_create ("MyClassDeallocQueue", NULL);
dispatch_async(myQueue, ^{
//time consuming operations
dispatch_async(dispatch_get_main_queue(), ^{
[self release];
});
});
}
@end