Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 圆弧检测_Iphone_Objective C_Ios_Xcode_Automatic Ref Counting - Fatal编程技术网

Iphone 圆弧检测

Iphone 圆弧检测,iphone,objective-c,ios,xcode,automatic-ref-counting,Iphone,Objective C,Ios,Xcode,Automatic Ref Counting,我将一些旧代码移植到Objective-C ARC(自动引用计数)中,它似乎工作得很好。除了一个相当大的高级对象,当它从我的导航堆栈中弹出时,它没有被释放,这让我相信我在某个地方有一个保留周期,ARC对我隐藏了(或者至少使跟踪变得困难)。消除此潜在保留周期的最佳方法是什么?确定ARC下内存泄漏原因的最佳方法是什么?谢谢 最好的方法通常是使用 “仪器中的新功能”视频讨论了使用仪器查找ARC下的保留周期,从大约38分钟开始。我刚刚将一个较旧的应用程序转换为使用ARC。仪器显示没有泄漏,但拨款继续增加

我将一些旧代码移植到Objective-C ARC(自动引用计数)中,它似乎工作得很好。除了一个相当大的高级对象,当它从我的导航堆栈中弹出时,它没有被释放,这让我相信我在某个地方有一个保留周期,ARC对我隐藏了(或者至少使跟踪变得困难)。消除此潜在保留周期的最佳方法是什么?确定ARC下内存泄漏原因的最佳方法是什么?谢谢

最好的方法通常是使用


“仪器中的新功能”视频讨论了使用仪器查找ARC下的保留周期,从大约38分钟开始。

我刚刚将一个较旧的应用程序转换为使用ARC。仪器显示没有泄漏,但拨款继续增加。我发现,通过查看活动对象中我知道应该删除的内容,我可以在不发布的情况下跟踪保留内容。以下是基本步骤:

  • 在工具中使用分配工具
  • 使用你的应用程序玩一段时间(如果你知道什么没有发布,这会更快)
  • 在分配跳栏中将统计信息更改为对象
  • 按类别排序并查找未发布对象的类名
  • 找到一个活动实例,然后单击内存地址旁边的右箭头
  • 现在,您可以看到对象的保留和释放历史

  • X-code 8引入了内存图调试工具:

    请在此处查看完整参考:


    看来我找到了!具有“不安全”且未恢复的块引用;将LOL的块更改为弱块,这似乎已经解决了它。注:仪器没有发现这一点,并且确实没有将其标记为潜在泄漏情况。无论如何,谢谢你的建议!哎呀,再挖了几次之后,发现漏洞还在附近。但只有当我把它推到导航堆栈上时它才会泄漏。。。如果我使用-init或-initWithNibName:bundle:,然后使用nil它的引用,它将正确地释放。否则,当我将它推到导航堆栈上,然后将其弹出时,它永远不会解除分配。