问题标签 [nszombie]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
606 浏览

iphone - 帮助使用 NSZombieEnabled

我正在尝试调试一些代码。我运行了静态分析器,并认为我修复了内存泄漏,现在当我在两个选项卡之间切换时出现错误。这是我在第二个选项卡和第一个选项卡之间切换时的代码:

我不断在 self.MainToolbar setItems 行上获得 EXC_BAD_ACCESS。我将 NSZombieEnabled 添加为环境变量,在该错误的访问行设置了一个断点,但是当在断点之后单步执行、在断点之后点击继续等时,我没有将任何内容打印到控制台。我是否使用正确?谢谢。

0 投票
6 回答
1864 浏览

iphone - popToRootViewControllerAnimated 给出“EXC_BAD_ACCESS”(但不能通过 NSZombie 获得)

我得到了具有多个视图的基于导航的应用程序。当我到达最后一个视图时,应用程序将发送一封电子邮件(使用 MailComposer)。之后就想回到家中查看。

一切正常,但是当我尝试使用以下方法返回主页时: [self.navigationController popToRootViewControllerAnimated:YES]; 应用程序将崩溃并显示“EXC_BAD_ACCESS”错误。我知道我可以使用 NSZombie 进行调试,但是当我尝试在 NSZombie 中获取错误时,不会出现错误。

我怎样才能解决这个问题?或者有没有办法只释放所有视图并重新加载第一个视图?任何提示或任何可以帮助我的东西都会很棒。这是一些代码:

0 投票
2 回答
267 浏览

objective-c - 访问有效的未释放对象时出现 EXC_BAD_ACCESS 错误

我在释放对象时出现了一个奇怪的问题。在对象的dealloc方法中,我正在释放另一个(子)对象。当这个子对象被释放时,我得到一个 EXC_BAD_ACCESS 错误。在我调用 release 之前,我很确定子对象是一个有效的指针。

这就是我确认奇怪之处的方式——我在 dealloc 方法中设置了一个断点,就在释放子对象之前,它被分配了!我可以向它发送消息,它会正确响应。另一个奇怪的错误是,如果 NSZombieEnabled 设置为 YES,我根本不会收到错误,甚至 NSZombie 的常见错误,即我已向已释放对象发送消息,代码运行正常。

有谁知道如何解决这个问题?

提前致谢!


* 编辑 1 *

我发现如果我将 [super dealloc] 放在 dealloc 的末尾,它会崩溃,但如果我将它放在 start 时,它不会。我以前也遇到过类似的情况,只是相反——如果我在我的 dealloc 开始时 [super dealloc] 应用程序会崩溃,而最后却没有。

为什么它会有所作为,什么时候应该使用什么?


* 编辑 2 *

从头开始编辑#1!这两种方式都行不通。

0 投票
1 回答
393 浏览

iphone - 如何在没有与 xcode 的活动会话的情况下在设备上调试僵尸?

我正在使用 NSZombieEnabled 调试释放对象的过度使用。如果您与 mac 有活动连接并从 xcode4 运行,那没关系。但是我正在寻找一个长期运行后发生的错误,我想在没有连接的情况下在设备上进行测试。只是想知道是否有可能有一些代码来在向僵尸发送消息时捕获事件,然后十个显示一些带有相关信息的 NSLog?

0 投票
2 回答
571 浏览

iphone - Xcode:NSZombie 没有捕捉到错误

可能重复:
Xcode malloc 错误

由于此消息,我的游戏有时会崩溃:

因此,按照建议,我在仪器中运行了分配工具以尝试查找泄漏并勾选启用 NSZombie 检测。它说它在执行期间检查僵尸。

但是应用程序崩溃了,什么都没有被捕获。

为什么僵尸不会抓住它?

谢谢。

0 投票
2 回答
688 浏览

iphone - 在哪里/如果在 UITableViewCell 中释放属性

编辑:好的,所以我想出了如何解决我原来的问题,但我不确定这是否是最好的方法。

我的新问题是,假设我有一个 UITableViewCell 的子类,标题中有以下属性声明:

这是在 IB 中连接的。在dealloc中不释放它,根本不释放它可以吗?这是我能想出让它工作的唯一方法,而不会给我一个 exc_bad_access 错误。之前,它在 tableviewcell 离开屏幕时调用了 dealloc,但它仍然需要它。我在哪里发布东西,还是它会为我处理这些?

原标题:UITableView 和 exc_bad_access 中的内存泄漏 好吧,我很困惑。我正在按照本教程在线制作自定义 UITableViewCells。我做了一个,我做了所有教程告诉我的事情。我的 UITableViewCell 子类包含 3 个 UILabel 和 3 个 UIButton,并且将它们全部定义为属性并在 IB 中连接。我需要它们可供课堂使用,因为我需要知道何时按下按钮并能够更改文本。当我运行该应用程序时,我开始滚动并在几秒钟后崩溃,主要是 exc_bad_access(控制台中没有输出)。但是当我在启用了 NSZombieEnabled 的仪器中运行该应用程序时,它根本不会崩溃,并且运行良好。但是,由于工具会向您显示分配,我可以看到它们非常迅速地上升,尤其是当我滚动时。

这是 PointCoordinatesCell.h (我的自定义单元格):

PointCoordinatesCell.m:

RootViewController.h 除了类声明和标准导入之外,什么都没有。没有定义变量或方法。它是 UITableViewController 的子类。

RootViewController.m:

0 投票
2 回答
8852 浏览

iphone - -[CALayer release]:消息发送到释放的实例

我的一个视图控制器的 loadView: 方法中的一些代码有问题。本质上,我有一个视图,它以更大的视图(在 iPad 上)为中心,并有一些以编程方式加载到其中的标签、按钮和图标。

当视图控制器调用 dealloc 方法并尝试释放时,就会出现问题。我收到-[CALayer release]: message sent to deallocated instance错误并且应用程序崩溃。

从阅读有关此错误的信息来看,我似乎过度释放了某些东西,但我不认为是这种情况:下面的代码是麻烦制造者,我已经尝试过自动释放和手动释放调用所有内容,以及只是不释放它们(我知道,我知道,这很糟糕),但它继续造成严重破坏。

在dealloc方法中释放容器属性,如下:

人们可以提供的任何答案或建议将不胜感激!我真的很难过。

0 投票
0 回答
358 浏览

objective-c - NSAutoreleasePool 耗尽释放+1 比发送的自动释放消息的数量多

我在调试一个以可重现的方式崩溃的 iPhone 应用程序时遇到了麻烦。

短篇小说: 一个自定义UIViewController被分配并推送到一个UINavigationController's 堆栈上。一段时间后,UIViewController从堆栈中弹出。下一次将 a 压入UIViewController堆栈会使应用程序崩溃。

任何崩溃的标准程序是使用NSZombie启用的仪器。在检查对象的历史后,发现一些我无法理解的内容:

  • 对象接收 2(两)autorelease条消息,并且
  • NSAutoreleasePool's drain 方法发送 3(三)条释放消息

到目前为止,防止崩溃的唯一方法是不向相关对象发送 1(一个)释放消息,从而引发内存泄漏的危险信号,只是它不会泄漏。

还有其他我忽略的解决方案吗?

更新:正如你们中的一个人指出的那样:

你的代码有问题。与自动释放池排水无关。

事实证明,第一个UIViewController是作为委托传递给的,因此当调用来自导航控制器本身UINavigationController时,我感到很困惑。Zombie

下次在问错问题之前我应该​​更加小心。

0 投票
2 回答
523 浏览

ios - 保留的财产被解除分配

我对 Objective-C 内存管理相当陌生,虽然我认为我理解它,但我有一个无法解决的问题。

我有这个属性:

我使用自定义方法在 viewDidLoad 中分配:

我的dbDateFormatToNsDate方法如下所示:

所以它返回一个自动释放的对象(如果 NSDate 遵循约定)。但是当我从viewDidLoad另一个试图阅读的函数中出来时dateDisplayed

我得到一个 NSZombie 异常。谢谢你的帮助!

0 投票
1 回答
452 浏览

cocoa-touch - 理解 NSZombie 日志

我正在尝试跟踪 exc-bad-access。我已经在启用 NSZombie 的情况下运行了 Instruments,当应用程序崩溃时我会收到此错误日志。有一个 UIView 被自动释放四次,但在自动释放池耗尽之前,它的引用计数为 3,因此 int 以 -1 引用计数结束。

我自己没有发送任何自动发布的消息,那么我该如何解决这个问题?