问题标签 [retaincount]

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 回答
3765 浏览

iphone - 我释放分配或保留的对象多少次?

我正在制作一款 iPhone 游戏。我想释放所有已分配或保留的对象。在dealloc函数中,我释放了所有此类对象,但后来我意识到有时我最终会释放尚未分配的对象。所以我想我需要retainCount在发布它之前检查它是否大于零。

我的问题是:

我是否只检查 是否retainCount大于零然后释放它?

或者

我应该像它一样多次释放它吗retainCount

谢谢你的帮助!

0 投票
2 回答
237 浏览

objective-c - 调用方法的方法:自动释放的基础?

就在我以为我已经完全理解了这个话题时,我又回到了基础。

我有一个实例化自动释放对象的方法,使用(例如)stringWithFormat

然后我从另一个方法和另一个方法调用这个方法,每次都返回这个 autoreleasedNSString并在层次结构的每个级别。代码工作正常,并且NSString实例在层次结构的每个级别都是完整的。

认为由于实例是自动释放的,它可能会突然retainCount在调用堆栈中的任何点以 0 结束(即,其中一种方法将在释放的对象上工作)。我不能依赖这个对象是真的吗?

编辑:我意识到这个问题并不太清楚。对不起。我是说:

0 投票
3 回答
314 浏览

ios - 由于保留计数而释放对象

我有太多次发布视图的问题。虽然理论上很简单,因为我将 uiview 移动到 uiview,它是 uiview 的一个子类并且被动画等等它不是我可以轻易修复的东西。它只会在某些条件下崩溃 10%,即使在这些条件下也只有 30% 的时间。

所以换句话说,它有点复杂。有时在我的 dealloc 方法中,此 UIView 的保留计数已经为 1(在释放视图时被释放),因此不应再次释放。所以我做的是这样的:

通常会调用与发布的崩溃一致的方法,但并非总是如此,而且当我有时期望它崩溃时,它几乎会发生。我已经用这段代码检查了泄漏,它永远不会泄漏。

现在的实际问题......由于保留计数而释放某些东西是错误的吗?我已经尝试了许多不同的方法来解决这个问题,到目前为止,这是唯一可靠且不泄漏的方法。

编辑:如果没有,那么将一个 UIView 复制到另一个 UIView 的更好方法是什么?

我试过先释放 mainView 然后在 newView 上调用 copy 但这会崩溃。上面的方法也很完美,除了保留计数有时比预期的低 1,即使它从未在代码中的其他任何地方发布。

0 投票
2 回答
144 浏览

objective-c - Objective-C 发布

我在 DNS.h 中有这个类

然后在实现文件 DNS.m 中有一个方法,我释放它,我得到 exec bad access memory 错误。这是方法,它符合 NSXMLParserDelegate 协议

也许第一个想法是nil,但实际上我在检查是否为nil的方法中使用它,然后释放它。

它与保留属性有关吗?谢谢。

0 投票
2 回答
184 浏览

iphone - 将@Property UISwitch 添加到 TableView 会导致 RetainCount 问题

我正在使用 UISwitchs 和 UITextFields 执行此操作...

我已在头文件中将 UISwitch 声明为属性,因为我想在我的类中通过几种不同的方法访问它的值。

我正在使用以下代码将 UISwitch 添加到我的 TableViewCell 之一:

事实上,retainCounts 无处不在。将单元格放在屏幕上时,mySwitch Retain 为 2,每次我点击开关时,保留计数都会增加,直到达到 4,然后它似乎就停留在那里。

显然我错过了一些东西。如果有人能指出我正确的方向,将不胜感激。

0 投票
3 回答
1288 浏览

objective-c - 在目标 C 中保留计数返回 -1

我是目标 C 的新手,我有一个 NSMutableArray,里面有 3 个对象,然后我尝试打印数组的 retainCount。为什么最终的 retainCount 返回 -1?谢谢

来自控制台的结果:

0 投票
1 回答
376 浏览

objective-c - 在单元格的 contentView 上调用“子视图”方法会增加保留计数

我不知道这里发生了什么,但我的 init 方法中有以下代码:

我知道我应该释放 game1CustomEntityInfoControl ,因为超级视图保留了该对象,但暂时保留它。

然后在我的 layoutSubviews 方法中,我有:

这是输出:

2010-10-24 15:14:08.598 Sangaku[8592:207] 在分配前在 init 中保留计数:0

2010-10-24 15:14:08.603 Sangaku[8592:207] 在分配后的 init 中保留计数:1

2010-10-24 15:14:08.611 Sangaku[8592:207] 添加到 superview 后在 init 中保留计数:2

2010-10-24 15:14:08.616 Sangaku[8592:207] 一进入 layoutSubviews 就保留计数:2

2010-10-24 15:14:08.621 Sangaku[8592:207] 在 contentView 上调用子视图后在 layoutSubviews 中保留计数:3

查看输出的最后一行。保留计数是如何变为 3 的?子视图是否在内部执行一些作为自动释放返回的分配?

谢谢

0 投票
1 回答
194 浏览

iphone - 由 NavigationController 推送时 ViewController 的保留计数 +4

我想知道为什么viewController 的retainCount 在推入Navigationcontroller 的堆栈时会提高4,例如从tableView 中。创建了哪些依赖项?

0 投票
4 回答
1977 浏览

iphone - Objective-C 确定哪些对象保留另一个对象

我在 iPhone 上遇到了一些内存泄漏问题(想象一下),并且我有一个保留计数为 10 的自定义对象。

有什么方法可以知道哪些代码触发了特定对象实例的保留计数增加?如果这很重要,我正在使用 GHUnit。

0 投票
1 回答
998 浏览

objective-c - NSMutableArray 删除对象增加引用计数?

我有一些导致 iOS 静态库内存泄漏的代码。下面是 Instruments 中一个对象的生命周期:

这是代码[AbstractColumn addColumnListener:]

而对于[AbstractColumn removeColumnListener:]

当我从 中删除对象时NSMutableArray,它似乎增加了保留计数而不是减少它。有没有其他人遇到过这个问题并且知道解决方案?