【问题标题】:Releasing a navigationItem释放一个导航项
【发布时间】:2011-08-31 20:06:29
【问题描述】:

我有以下问题:

我有一个 AppDelegate,我在那里添加了一个 navigationController 并在其中加载 UIViewController B。

在 B 中,我添加了一个 navigationItem、一个 leftBarButtonItem 或一个 rightBarButtonItem。

我要在哪里释放这些项目,因为我在B中分配和初始化它们。所以一开始我考虑在B的Dealloc-Method中释放self.navigationItem.rightBarButtonItem。

但如果我正在分析我的应用程序,分析器会在 B 的 dealloc-method 中的释放位置显示:

不正确的对象的引用计数递减不正确 此时由调用者拥有。

但我不明白我做错了什么或者一切正常,这是分析仪的问题?

谁能帮我看看?

问候andi1984

【问题讨论】:

  • 在创建导航项时是否会自动释放它们?你能展示你在哪里创建这些导航项的代码吗?

标签: ios code-analysis navigationcontroller navigationitem


【解决方案1】:

一旦你分配并分配给 rightBarButtonItem 你就可以像释放一样

UIBarButtonItem *rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(showNewEventViewController)];
self.navigationItem.rightBarButtonItem = rightBarButtonItem;
[rightBarButtonItem release];

类似于leftBartButtonItem

self.navigationItem.rightBarButtonItem 本身可能有一个保留,并且知道何时释放该计数。

【讨论】:

  • 所以我不需要自己手动释放self.navigationItem.rightBarButtonItem?
  • 没有。但请确保在将其分配给 self.navigationItem.rightBarButtonItem 之后执行 [rightBarButtonItem release]。
猜你喜欢
  • 2013-03-17
  • 2013-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-16
相关资源
最近更新 更多