【问题标题】:Error while navigation导航时出错
【发布时间】:2012-11-05 05:00:34
【问题描述】:

当我使用 y=this 两行导航到另一个视图控制器时,它可以正常工作。

  Inventory *obj = [[Inventory alloc] initWithNibName:@"Inventory" bundle:nil]; 
  [self.navigationController pushViewController:obj animated:YES];

但是如果我写这行[我们必须写的]

[obj release];

它给了我错误的访问错误。

请帮忙。

谢谢

【问题讨论】:

  • 1) 使用 Arc 2) 你在哪里写 [obj release];
  • 你的意思是自动释放?我没有使用 ARC。
  • 同意。如果您将[obj release] 放在pushViewController 之后,那么该对象将有一个+1 retainCount(因为pushViewController 将为您保留它)并且当您稍后popViewController 时,它将被适当地清理为你准备好了。
  • 同样的问题,你在哪里发布?在插入导航控制器之前还是之后?
  • “使用 ARC”的建议无疑只是一个旁注,并不意味着与 ARC 显然不需要的 release 代码一起完成,因为你会少很多这些日常内存管理问题是由于将您的 release 语句放在错误的位置而导致的。但是,尤其是考虑到您没有使用 ARC,您可能会使用 Xcode 的静态分析器(“Product”-“Analyze”或 shift+command+B),这将突出显示非 ARC 代码中的许多常规内存管理问题。

标签: iphone ios ipad uinavigationcontroller


【解决方案1】:

你的类对象被释放,然后它再次访问已经释放的对象,所以你得到这个错误的访问错误。 请阅读以下链接文章Understanding EXC_BAD_ACCESS

【讨论】:

    【解决方案2】:
    Inventory *obj = [[[Inventory alloc] initWithNibName:@"Inventory" bundle:nil] autorelease]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-09
      • 2022-06-26
      • 2021-05-27
      • 2019-02-08
      • 2020-08-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多