3
我有一组对象,init'd和视图控制器拥有。视图控制器在这些对象中的每一个中启动一个fetchData
方法,这些对象在后台线程中运行,然后在完成时返回主线程并更改视图控制器正在观察的属性 - self.dataFetchComplete
。对象在运行后台线程时解除分配时发生崩溃
dispatch_async(dispatch_get_main_queue(), ^{
self.dataFetchComplete = YES;
});
如果这些对象是用这种方法完成之前视图控制器被释放,当它击中self.dataFetchComplete = YES;
线,它崩溃。
如何在释放后试图更改此属性时阻止它崩溃。
编辑:更多信息和清晰度。
您需要提供更多的上下文和代码。如果你的对象被提前解除分配(并且你知道**它是故意发生的),那么你的设计问题就很糟糕。 – 2013-07-05 18:18:39
请说明“如果在返回主队列之前将对象解除分配,尝试设置此属性时会引发错误。”太多代名词。什么对象?什么回来之前?什么引发错误?你在使用ARC吗? –
该块应该捕获(并保留)自我,因此如果它被释放,那么在其他地方有一个错误会过度释放它。 –