gpt4 book ai didi

objective-c - 在 iOS 5 的 ARC 中,你能看到是谁导致了一次发布吗?

转载 作者:太空狗 更新时间:2023-10-30 04:00:26 25 4
gpt4 key购买 nike

在我启用了 ARC 的 iOS 5 项目中,我的一个对象被过早释放,所以当我稍后尝试访问它时,我得到一个空指针。在 ARC 之前,我会像这样简单地覆盖 release:

-(oneway void)release {
NSLog(@"-1"); //breakpoint goes here
[super release];
}

然后在 NSLog 上添加断点并检查调用堆栈以查看是谁导致了释放。

我如何找出谁在 ARC 下“调用”了发布? (“调用”可能是错误的词,因为编译器插入了发布调用,所以我的意思是“编译器插入发布调用的行在哪里?”)。

最佳答案

如果您需要查看某个对象的保留、释放和自动释放发生在何处,请使用工具:

在 instruments 中运行,在 Allocations 中设置“Record reference counts”(您必须停止记录才能设置该选项)。使问题代码运行,停止记录,搜索感兴趣的 ivar,向下钻取,您将能够看到所有保留、释放和自动释放发生的位置。

enter image description here

关于objective-c - 在 iOS 5 的 ARC 中,你能看到是谁导致了一次发布吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9229141/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com