如何将对象保持在范围内,该对象在后台执行任务,该对象是从另一个对象的方法实例化的?
请参阅以下示例。对象 A 的 display 方法实例化对象 B 并调用它的 display 方法。当 B 对象的 display 方法启动一个异步任务时,控制返回到 A::display 方法,该方法返回,并且 bObject 被释放。在后台线程中访问 bObject 的数据/方法时,会抛出异常。
维护对象 B 范围的最佳方法是什么?我可以将对象 B 声明为 A 的成员变量,但这会增加对象 A 整个生命周期的范围。
@implementation A
-(void) display
{
B* bObject = [[B alloc] init];
[bObject display];
}
@end
@implementation B
-(void) display
{
dispatch_async((dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_LOW, 0),{
self.data = 5;
---------
});
@end