系统是否在performSelector对象上执行保留操作:onThread:withObject:waitUntilDone:何时不等待?
问题描述:
考虑下面的代码 - 显然非ARC:系统是否在performSelector对象上执行保留操作:onThread:withObject:waitUntilDone:何时不等待?
.
.
.
NSString* someValueToSend= [NSString alloc] [email protected]"Send me! Will I survive?"];
if([delegate respondsToSelector:@selector(giveMeYourString:)])
{
[delegate performSelector:@selector(giveMeYourString:) onThread:someOtherThread withObject:someValueToSend waitUntilDone:NO];
}
[someValueToSend release];
.
.
.
根据什么其他的应用程序是怎么回事,委托可能会或可能不会得到周围被释放someValueToSend之前运行的选择。这个“系统”是否对对象保留“礼貌”?
如果不是,并且我处于无法阻止的情况,那么在没有泄漏的情况下跨越边界发送值的策略是什么?自动释放?
我发现别处的参考,所述对象被保留,但我还没有看到该文档中....
任何输入理解。
答
是的,系统会保留该对象。
而且,不,autorelease
可以从来没有被用来保护一个对象不被跨线程边界释放。从技术上讲,它可以在同步的情况下,但不这样做。
感谢您的快速响应! – GTAE86