问题标签 [retain-cycle]
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.
ios - 强烈阻止捕获“自我”
我对按钮有以下操作,它可以切换对象是显示为收藏还是非收藏:
两个完成块是相同的,除了图像名称。XCode 向else
案例发出警告:Capturing 'self' strongly in this block is likely to lead to a retain cycle
并指向_favoriteButton
. if
但是,在条件为真的情况下不会发生同样的情况。
我想这两种情况或都不应该出现警告,我不明白为什么只有后者才显示它。这是一个 Xcode 错误吗?两者都导致保留周期吗?
ios - 可能的保留周期——iOS/Objective——C
我正在解析 XML 文件中的数据,并相信我找到了一个保留周期。我没有最好的理解如何解决它。简而言之,我正在解析一个块中的一堆浮点数,这导致我的内存使用量超过了 250 MB。不好。这是代码:
上面的方法调用了下面的方法:
** ... ** 之间的方法也在下面。这就是我认为问题所在。字符串未正确释放。
我说它在这里的某个地方,因为当我使用分配工具时,我会得到大量的 CFStrings,如下面的屏幕截图所示。我不确定这是否有足够的信息,但如果有人能看到任何问题,请告诉我。否则,也许我可以朝着正确的方向迈出一步。
当我深入到 CFString(不可变)行时,它有许多行是在[NSString componentsSeparatedByString:]
.
ios - 保留周期上的保留周期
我看到记忆的逐渐积累,我认为这可能是一个保留周期。
何时发生:单击一个自定义单元格,该单元格展开并在展开区域中注入一个带有 3 个按钮的笔尖。再次单击该单元格将关闭该单元格,缩小该单元格的表格高度,旋转一个打开的指示器并移除先前注入的笔尖。
如果我多次打开和关闭牢房,我会看到记忆逐渐积累。
任何可能导致这种情况的想法将不胜感激。
抱歉,我没有足够的声誉来发布照片。
积聚:
保留对象的示例(主要与动画相关):
编辑:使用 ARC 和 iOS 6
MasterViewController - 表视图函数
SRchoiceBox - 插入单元格的 UIView 对象
SRCollapsibleCell -- 可重复使用的单元格
//。H
//.m
ios - 理解这个 Xcode 4.6 Allocations Instruments 输出:Retain Cycle Detection
我想我得到了一个保留周期。它发生在我推动和解雇 VC 时。每次我推动和关闭时,类似的物体就会堆积起来。
有人可以帮我理解这个分析器的输出。(上图)
问题 1 + 1.5:似乎一个事件触发了一个永远不会被释放的 GCD 调度块。诚然,我并不完全理解正在发生的一切。这个对象(1.31mb 突出显示的对象)是什么以及其生命周期中的一系列事件?知道为什么它没有被释放吗?
问题 2:您在下面的代码中看到保留周期的任何机会吗?
iOS:6
代码:4.6
测试:iphone 4 设备
DetailViewController.h
细节视图控制器.m
iphone - 此 CAAnimation 会导致泄漏或保留周期吗?
问题:如果包含应用了以下动画的 UIView 的 ViewController 被释放,是否会导致内存泄漏或保留循环?
换句话说,如果我将此动画应用到 uiview,当 uiview 的父 VC 被解除或释放时,是否会导致内存泄漏或保留循环?
ios - iOS:简单的保留周期
假设你有一个 viewController:
然后你故意在某个时候创建一个保留周期,没有计时器,这样
问题:假设包含这些属性的 VC 被释放,保留周期或内存泄漏是否会持续存在?
ios - 我是否正确使用了这个块?
问题:我是否正确使用了这个块?没有泄漏或保留周期?
问题 1.5:这种风格好还是我应该只做一个内联块?
objective-c - ARC中的递归阻塞和保留循环
编辑2:
不,建议的答案是关于异步调用。我想要并需要同步调用,就像在正常的标准递归调用中一样。
编辑:
尽管
编译时没有警告或错误,它在运行时失败,并将 NULL 存储到 unsafe_apply 中。
然而这:
编译没有警告,但更重要的是,实际运行。
但这太丑了!
考虑(着色视图层次结构,用于公开目的......):
我收到这个警告:
/Users/verec/Projects/solotouch/SoloTouch/BubbleMenu.m:551:42:Block pointer variable 'apply' is uninitialized when captured by block
如果我应用建议的修复:Maybe you meant to use __block 'apply'
然后我得到:/Users/verec/Projects/solotouch/SoloTouch/BubbleMenu.m:554:13:Capturing 'apply' strongly in this block is likely to lead to a retain cycle
我尝试了各种方法来篡改代码并摆脱那些警告
但事情只会变得更糟,变成错误。
我最终得到了这个:
任何人都有更好的解决方案,我可以在块内做所有事情,而不是像我在这里必须做的那样可怕地修补它?
ios - 深入了解保留周期
假设我们有三个对象:祖父母、父母和孩子。祖父母留住父母,父母留住孩子,孩子留住父母。祖父母释放父母。
在这种情况下会发生什么?
ios - 在完成块中访问超级的正确方法
我有一个 NSOperation 的子类,它通过网络发送取消请求。我只想在请求成功时取消操作:
这会导致任何保留周期或其他什么吗?我需要弱超吗(我正在使用 ARC)