3

我有一组对象,由视图控制器初始化并拥有。视图控制器fetchData在每个对象中启动一个方法,该方法在后台线程中运行,然后在完成后返回主线程并更改self.dataFetchComplete视图控制器正在观察的属性 - 。

dispatch_async(dispatch_get_main_queue(), ^{        
    self.dataFetchComplete = YES;
});

如果视图控制器在使用此方法完成这些对象之前被释放,当它到达该self.dataFetchComplete = YES;行时,它会崩溃。

在被释放后尝试更改此属性时,如何阻止它崩溃。

编辑:更多信息和清晰度。

4

1 回答 1

1

该块对self. self可以解除分配的唯一方法是如果您在其他地方过度释放它(如@Catfish_Man 所示)。

  1. 如果发生崩溃,请发布崩溃的回溯

  2. 如果您遇到过度释放崩溃,请使用 Instruments 跟踪对象上的所有保留/释放事件。

  3. 运行分析器并修复它指示的任何问题。

于 2013-07-05T20:10:00.393 回答