- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
最近我正在修复某人的代码。有一个大类不会解除分配。您必须发布 5 或 6 个版本才能将其释放。
我仔细地翻遍了大类,最终找到了各种需要发布的东西。
这让我思考:必须有一些非常简单的方法来“查找”对象上的所有保留..我对吗?
那么,有没有一种简单的方法可以“找到对象上的所有保留”? XCode 或 Instruments 中是否有一个其他人都知道的按钮?
当你找不到这样的谜团时你会怎么做?
因此,在 iOS 世界中,如果有人知道“显示此对象上所有保留的来源” 按钮 - 谢谢!
附注请注意,没有泄漏,并且这个问题与泄漏完全无关。该对象只是“完全正确”不会释放。
<小时/>稍后..
Fabio 为这个问题提供了一个令人震惊的解决方案。用九个字来说,就是:
-(id)retain
{
NSLog(@"%@", [NSThread callStackSymbols]);
return ([super retain]);
}
这在许多情况下都非常有用,并会带来许多其他有用的东西。法比奥,你可能每年永远为我节省了两个人周的工作量。谢谢!
顺便说一句,如果您刚刚开始处理这个问题并与输出作斗争,我发现通常会有许多具有“UINib instantiateWithOwner:”特征的 block 。看起来这些将首先出现,重要的部分将随之而来。
最佳答案
Instruments 可以向您显示应用中任何 Obj-C 对象的每个 malloc、release 和保留的调用堆栈,无需更改代码。当您使用 ARC 时它可以工作,但 fabio 的解决方案不是这种情况。
这对于寻找那些神秘的遗迹非常有用 - 例如当一个对象在应该释放的时候却没有释放时。
方法如下:
简单! (大约)
关于iphone - 有办法到达 "find mystery retains"...吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5587509/
我是一名优秀的程序员,十分优秀!