0

- 使用ARCdidReceiveMemoryWarning崩溃

-I有5个单独的视图控制器的所有子类类我提出所谓的“UIViewControllerWithLoadingView”,其子类的UIViewController。

-In子类都和超我分配和释放性质是这样的:

@property (strong, nonatomic) NSURLConnection *urlConnection; 

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

- 现在时didReceiveMemoryWarning被调用时,子类viewDidUnload方法充当细。 BBBUUTTT如果我在超类UIViewControllerWithLoadingView中将属性设置为零,应用程序将崩溃。尤其在我将子类的属性设置为零的情况下。所以现在我只是不要在超类中将属性设置为零,这会成为问题,因为活动字节在运行时保持堆叠状态。

+2

碰撞时发生了什么异常? (如果它没有告诉你,请使用@ try/@ catch来查找。) – 2012-07-23 12:26:02

+0

“线程1:EXC_BAD_ACCESS(code = 2,address = 0x8)”我无法获取异常的描述,因为应用程序在我登录之前崩溃 – MobileMon 2012-07-23 12:41:23

+0

使用Breakpoint navigator **或**在程序的第一行(main.m)中放置@ try/@ catch来设置Objective-C异常的断点。 – 2012-07-23 12:46:26

回答

0

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

0

经验法则是,“清理”的方法(如dealloc或viewDidUnload)应该在超出其他所有方法后调用超级方法。 (和“设置”的方法 - 比如init - 先调用超级方法。)我不知道你的问题在没有看到你所有的子类实现的情况下是否是你的问题,但那将是一个开始的地方。

+0

尽管根据您的意见,我确实在错误的地方有一些超级电话,但这仍然没有解决问题 – MobileMon 2012-07-23 14:33:50