问题标签 [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 投票
1 回答
1289 浏览

iphone - 检查保留计数

我正在这样做:

我有

1)在dealoc函数中我可以得到如下消息:

2)最后我得到了backgroundimage的保留计数1 ,所以没关系,或者它应该是0(零)??

谢谢..

0 投票
3 回答
356 浏览

objective-c - 保留/释放计数问题。需要澄清

可能重复:
检查保留计数

当我在玩时retainrelease计数,我遇到了一种情况,我无法解释。请帮助我更好地理解它:

  • 有一堂课O。它不包含变量,也不做任何事情。
  • 有一个类计数。它初始化O并递增,递减计数
  • 有一个带有 2 个按钮的 UI 笔尖:保留和释放

在此处输入图像描述

对于每个 doRetain,按预期计算增量

每当调用 release 时,计数都会减少

考虑 1 个保留和 2 个发布

在此处输入图像描述

  1. 在分配初始化序列之后,我们从保留计数 1 开始
  2. 其次是手动保留计数上升到 2
  3. 然后我们减少计数,它下降到 1
  4. 之后下一个减少......似乎什么也没做保留计数仍然是1
  5. 此版本指的是内存不足并导致应用程序崩溃。

请帮助我理解这种行为

0 投票
1 回答
255 浏览

objective-c - 是否在(保留)正确的@property 上分配 self.string = @"" ?

某种哲学问题。将常量字符串分配给(保留的)@property 是否合适?或者,我应该这样做self.string = [NSString stringWithString:@""]

有内存泄漏吗?如果超载了怎么办?

它是一个常量字符串,那么它的行为方式是否与 NSString 对象相同?

如果属性是 (assign) 是否意味着它在运行循环后将无效?

0 投票
1 回答
450 浏览

objective-c - NSTimer 保留计数增加,为什么?

我有一个关于NSTimer. 请参阅以下代码:

每次调用方法时,对象executeDataRefresh的保留计数现在将增加 1 executeDataRefresh。所以 1 分钟后保留计数为 60。

我知道该方法retainCount不应该使用,但是这种方法真的是“不正确”吗?

怎么会?

0 投票
1 回答
154 浏览

objective-c - 释放对象:[obj release];还不够,需要[obj release],obj = nil;?

在这里,我得到了一些丑陋的代码:

如您所见,retains 计数器返回 1,我想这意味着该对象没有被释放。如果我将该字符串更改为

保留计数器返回 0,这可能是因为它无法计算保留为 nil :)

关于保留计数器有什么我不明白的地方,或者这个对象真的没有释放吗?当我release第二次发送给它时(努力使保留计数为零),它会按预期粉碎:)

还有一个问题:如果 dateFormatter 真的被释放了,为什么当我调用 [dateFormatter retainCount] 时它不会崩溃?

0 投票
2 回答
616 浏览

objective-c - ios潜在泄漏如何解决?

我分析了我的项目:结果如下: 在此处输入图像描述

什么意思,我该如何解决这个问题?

0 投票
2 回答
13021 浏览

iphone - 调试时如何检查保留计数

有人知道在调试模式下如何检查对象的保留计数吗?我试图添加一个表达式[objInstance retainCount],但它不起作用。我也尝试过控制台中的打印对象 PO [objInstance retainCount],但它再次不起作用。

0 投票
1 回答
292 浏览

objective-c - cocos2d中无法释放UIView

我有这个从网络上某个地方得到的示例代码。

我的 .h 文件如下所示:

我在 init 方法中的 .m 文件有:

一切都很酷,但当我关闭弹出窗口时,不会调用 dealloc。

在这段代码之后,landscapeView 上的 retainCount 似乎仍然是 1:

我不知道如何处理它......我没有其他地方可以使用landscapeView,它只在这里。

我已经尝试对 UIView 进行子类化以尝试找出调用保留和释放的位置,这是列表:

打开弹窗:

  1. 保留来自我的 PopupWindowString 初始化方法的调用
  2. 从 [CALayer layoutSublayers] 保留
  3. 从 CALayerLayoutIfNeeded 释放

关闭弹出窗口:[我打了一个 CCMenuItemImage]

  1. 从 [UIView(Hierarchy) 子视图] 中的 [__NSArrayM addObject] 保留
  2. 从我的代码中释放[我之前粘贴的那个]
  3. 从我的代码中释放 [从子视图中删除]

如您所见,缺少一个版本。我认为,在关闭弹出窗口时,第一次保留是由我触摸视图引起的。然而,它永远不会被释放。

有谁知道如何解决这个问题?

谢谢,克里斯蒂安

0 投票
3 回答
1346 浏览

xcode - 保留/释放问题

我刚刚分析了我的 iPhone 项目,对 XCode(4) 给我的结果感到非常困惑。例如,在我的一个视图控制器中,我有以下代码:

menuItems以及menuItemsOptions带有retain选项的属性。如果我按分析,XCode 将显示该行的错误[self.menuItems release];

http://i54.tinypic.com/2rqkfaf.png

更让我困惑的是,XCode不会显示该行的错误[self.menuItemsOptions release];

另一种方法中的类似情况:

http://i55.tinypic.com/10hof9c.png

theSelectedBegin并且theSelectedEnd再次是具有保留选项的属性。

我发布这个的原因是我的应用程序实际上会在第三方库中以非常神秘/不可理解的回溯崩溃,除非我copy在最后一张图片上添加看到但添加release. 添加release或省略copy将使应用程序再次崩溃,这就是我决定运行分析器的原因。

我究竟做错了什么?

0 投票
4 回答
2836 浏览

objective-c - 如何判断对象是否在 NSAutoreleasePool 中

我想知道一个对象被自动释放了多少次。我使用objective c 的时间足够长,通常可以直接知道对象是否已自动释放,但是我经常看到处理内存和保留计数的问题。在某些时候,答案总是会结束,“你不能相信一个对象的retainCount”——我同意,但是如果你能确定一个对象被自动释放的次数,那么你实际上可以相信如果你添加了retainCount一个类别,如:

不可变类型仍然会有一个例外,因为它们通常会在复制期间增加保留计数,因此您仍然不能信任这些保留计数。

我不建议什么

我不是在寻找在生产代码中使用 retainCount 的答案。但是,我认为这对于调试内存问题的人很有价值。

我想有些人会讨厌这个问题,因为程序员不应该关心一个对象被自动释放了多少次。编码应该是关于平衡分配、保留、复制、新的发布、故事的结尾。但是,这样做的目的是帮助人们敲打他们的头。 [NSObject retainCount]烧了很多人,这个问题的答案会很酷。

我确信有一种方法可以确定对象被自动释放的次数。我只是不知道它是什么,因此问题。

请参阅类似问题:Objects inside NSAutoreleasePool in objective-c

编辑


谢谢大家的回答。你可能会发现这很有趣 => Ariel 指出 GNUStep 的 Cocoa 实现,特别是 NSAutoReleasePool 有这个方法:+(NSUInteger)autoreleaseCountForObject:(id)anObject。这个方法很慢,并且只返回调用者线程上 NSAutoReleasePools 的自动释放计数。仍然......有趣的是它在那里。文档引用它实际上只对调试有用。这确实是我希望以某种方式在 Cocoa 框架中找到(或找到可能)的东西。

我同意答案,即使有可能获得更好的工具(僵尸,泄漏,静态分析器)存在的自动释放计数。