在调用performSelectorOnMainThread之后可以释放我的对象

时间:2013-04-24 00:44:01

标签: ios objective-c cocoa nsobject

内存管理正在手动完成,ARC未在此项目中使用..

使用alloc init创建消息对象,并在后台线程上调用以下代码。

我在下面的调用之前传递了一个消息对象:

 [self performSelectorOnMainThread:@selector(serverConnectionResult:) withObject: message waitUntilDone:NO];  

我想做的电话之后:

 [message release];

我很困惑我是否应该这样做,因为我担心在调用serverConnectionResult时消息对象是否始终有效?方法调用performSelectorOnMainThread是否保留了消息对象本身?知道被调用的方法保留我传递的对象的规则是什么?

2 个答案:

答案 0 :(得分:2)

这样做是安全的。 -performSelectorOnMainThread:withObject:waitUntilDone:将保留邮件的目标和对象。同样地,-performSelector:withObject:afterDelay:也将保留目标和对象。

答案 1 :(得分:0)

您还可以使用Grand Central Dispatch并在主线程上使用dispatch_async并传入一个调用您的方法的块,然后释放该消息。