使用釋放我有其中有幾個視圖控制器的IOS項目(ARC禁用)。一個特定的控制器初始化MyClass類型的成員對象,但是當視圖控制器被解散時,我爲使用線程的對象(使用dispatch-async)調用一個清理方法來做一些耗時的操作,然後當這些操作在對象的主隊列上執行[自釋放]完成。這是一個很好的做法,會導致任何錯誤嗎?下面是一個類似的例子,以什麼即時做:IOS在一個異步塊
@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
我不這樣做手工引用計數,但不會塊有你的對象的引用?所以你可以調用清理函數,然後立即從控制器內部釋放它。 '[self release]'對我來說似乎是錯誤的... – Putz1103
你可能以前聽說過這個,但是ARC很棒。它比人工計數好得多。它只花了幾個小時將我們的大應用程序轉換爲它。 – HalR
Pulz1103,我不能調用立即釋放,這個對象需要清理它可以釋放 – user157453