0

- 使用 ARC

-我有 5 个独立的视图控制器,它们都继承了我创建的名为“UIViewControllerWithLoadingView”的类,该类是 UIViewController 的子类。

- 在子类和超类中,我分配和解除分配属性如下:

@property (strong, nonatomic) NSURLConnection *urlConnection;

- (void)viewDidUnload
{
    [super viewDidUnload];
    self.urlConnection=nil;
}

- 现在当 didReceiveMemoryWarning 被调用时,子类 viewDidUnload 方法可以正常工作。BBBUUTTT 如果我在超类 UIViewControllerWithLoadingView 中将属性设置为 nil,应用程序将崩溃。特别是在我将子类的属性设置为零的地方。所以现在我只是没有在超类中将属性设置为 nil,这会成为问题,因为活动字节只是在运行时不断堆积。

4

2 回答 2

0

经验法则是“清理”的方法——如 dealloc 或 viewDidUnload——应该在完成其他所有操作后调用 super。(以及“设置”的方法——比如 init——首先调用 super。)如果没有看到你所有的子类实现,我无法判断这是否是你的问题,但这将是一个开始的地方。

于 2012-07-23T14:00:50.000 回答
0

问题出在超类中,我有一个扩展 uiview 的视图,该视图具有对视图控制器的属性引用。好吧,在 arc 中会自动调用 dealloc,因此 dealloc 实际上会将 viewcontroller 本身设置为 nil ,从而导致崩溃。一旦我在自定义视图类中删除了视图控制器的属性,问题就不再发生

于 2012-07-24T14:07:22.917 回答