我有一个 IOS 项目(禁用 ARC),它有几个视图控制器。一个特定的控制器初始化 MyClass 类型的成员对象,但是当视图控制器被解除时,我正在为使用线程(使用调度异步)的对象调用清理方法来进行一些耗时的操作,然后当这些操作完成我在对象的主队列上执行 [self release]。这是一个好习惯,会导致任何错误吗?下面是一个与我正在做的类似的例子:
@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