问题标签 [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.

0 投票
2 回答
727 浏览

ios - 强烈阻止捕获“自我”

我对按钮有以下操作,它可以切换对象是显示为收藏还是非收藏:

两个完成块是相同的,除了图像名称。XCode 向else案例发出警告:Capturing 'self' strongly in this block is likely to lead to a retain cycle并指向_favoriteButton. if但是,在条件为真的情况下不会发生同样的情况。

我想这两种情况或都不应该出现警告,我不明白为什么只有后者才显示它。这是一个 Xcode 错误吗?两者都导致保留周期吗?

0 投票
2 回答
255 浏览

ios - 可能的保留周期——iOS/Objective——C

我正在解析 XML 文件中的数据,并相信我找到了一个保留周期。我没有最好的理解如何解决它。简而言之,我正在解析一个块中的一堆浮点数,这导致我的内存使用量超过了 250 MB。不好。这是代码:

上面的方法调用了下面的方法:

** ... ** 之间的方法也在下面。这就是我认为问题所在。字符串未正确释放。

我说它在这里的某个地方,因为当我使用分配工具时,我会得到大量的 CFStrings,如下面的屏幕截图所示。我不确定这是否有足够的信息,但如果有人能看到任何问题,请告诉我。否则,也许我可以朝着正确的方向迈出一步。 在此处输入图像描述

当我深入到 CFString(不可变)行时,它有许多行是在[NSString componentsSeparatedByString:].

0 投票
0 回答
452 浏览

ios - 保留周期上的保留周期

我看到记忆的逐渐积累,我认为这可能是一个保留周期。

何时发生:单击一个自定义单元格,该单元格展开并在展开区域中注入一个带有 3 个按钮的笔尖。再次单击该单元格将关闭该单元格,缩小该单元格的表格高度,旋转一个打开的指示器并移除先前注入的笔尖。

如果我多次打开和关闭牢房,我会看到记忆逐渐积累。

任何可能导致这种情况的想法将不胜感激。

抱歉,我没有足够的声誉来发布照片。

积聚: http://imgur.com/Up6iAPr

保留对象的示例(主要与动画相关): http://imgur.com/8X2Tr8L

编辑:使用 ARC 和 iOS 6

MasterViewController - 表视图函数

SRchoiceBox - 插入单元格的 UIView 对象

SRCollapsibleCell -- 可重复使用的单元格

//。H

//.m

0 投票
1 回答
152 浏览

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

0 投票
1 回答
736 浏览

iphone - 此 CAAnimation 会导致泄漏或保留周期吗?

问题:如果包含应用了以下动画的 UIView 的 ViewController 被释放,是否会导致内存泄漏或保留循环?

换句话说,如果我将此动画应用到 uiview,当 uiview 的父 VC 被解除或释放时,是否会导致内存泄漏或保留循环?

0 投票
2 回答
817 浏览

ios - iOS:简单的保留周期

假设你有一个 viewController:

然后你故意在某个时候创建​​一个保留周期,没有计时器,这样

问题:假设包含这些属性的 VC 被释放,保留周期或内存泄漏是否会持续存在?

0 投票
1 回答
84 浏览

ios - 我是否正确使用了这个块?

问题:我是否正确使用了这个块?没有泄漏或保留周期?

问题 1.5:这种风格好还是我应该只做一个内联块?

0 投票
3 回答
7908 浏览

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

我尝试了各种方法来篡改代码并摆脱那些警告

但事情只会变得更糟,变成错误。

我最终得到了这个:

任何人都有更好的解决方案,我可以在块内做所有事情,而不是像我在这里必须做的那样可怕地修补它?

注意那些SO 问题是关于捕获self的,那些SO 问题没有任何令人满意的答案。

0 投票
10 回答
43048 浏览

ios - 深入了解保留周期

假设我们有三个对象:祖父母、父母和孩子。祖父母留住父母,父母留住孩子,孩子留住父母。祖父母释放父母。

在这种情况下会发生什么?

0 投票
1 回答
452 浏览

ios - 在完成块中访问超级的正确方法

我有一个 NSOperation 的子类,它通过网络发送取消请求。我只想在请求成功时取消操作:

这会导致任何保留周期或其他什么吗?我需要弱超吗(我正在使用 ARC)