问题标签 [autorelease]

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

iphone - 对于经常重新分配给新分配的内存的实例变量,在 iPhone 应用程序中管理内存的正确方法是什么?

我无法弄清楚如何为需要在一段时间内保持其当前状态的实例变量管理内存,然后将其重新分配给新分配的内存。

以实例变量“importantData”为例:

在我的实际项目中,getObject 过程位于不同的类中,但我已对其进行了简化,以表达我的观点。importantData 必须在对 Update 的调用之间保持有效。

每次调用 getObject 时,我都会分配新内存并将其分配给重要数据,对吗?我想我必须释放重要数据之前指向的内存,对吧?我不确定如何在不泄漏内存或尝试引用已释放内存的情况下正确执行此操作。谢谢!

0 投票
2 回答
3265 浏览

objective-c - return autorelease 是目标 c 中的错误吗?

我是目标 c 的新手,并试图了解如何/何时调用 autorelease。我了解以下简单用例:

那么下一个案例呢——这是一个错误,因为该对象将在离开 makeBar 的范围后立即释放?

如果调用者进行了保留怎么办?

谢谢,-埃里克

0 投票
2 回答
802 浏览

iphone - TableViewCell 自动释放错误

好的,这两天我一直在尝试解决我在 cellForRowAtIndex 方法中遇到的错误,首先说我已经找到了这个方法的错误,错误是 [CFDictionary image] 或 [Not a Type image]消息发送到解除分配的实例。

我知道调试标志、NSZombie、MallocStack 等,它们帮助我将范围缩小到这种方法以及为什么,但除了重新设计应用程序 UI 之外,我不知道如何解决。

所以我想做什么,对于这个代码块,显示一个购买详细信息,其中包含项目,项目在自己的部分中,现在在编辑模式下,项目部分底部出现一个单元格“添加新商品”的标签,此按钮将呈现添加商品控制器的模式视图,添加商品并返回购买详细信息屏幕,刚刚添加的商品在“添加新商品”上方的部分项目”单元格,当我将项目部分滚动到屏幕外并返回查看应用程序崩溃时出现问题,或者即使我不滚动而是点击导航栏上的后退按钮,仍然是同样的错误。

singleItem 是核心数据的模态类型 PurchaseItem

既然我知道是什么导致了错误,我该如何解决它,我已经尝试了我所知道的所有内容以及我不知道的一些内容,但仍然没有进展,请任何关于如何在不重新设计的情况下解决这个问题的建议是我的目标,也许我正在做一个我看不到的错误,但如果这是自动释放的性质,我会重新设计。

更新:添加 AddItemController

0 投票
3 回答
277 浏览

objective-c - 在objective-c中保留对象

我正在做一个设置方法:

OBS:somobject 是一个类的属性。

在 [somobject autorelease] 上我声明我不想在 setSomeObject 的范围内拥有更多的对象。

被另一个对象保留的“someobject”会被释放吗?还是仅在 setSomeObject 方法上释放对象?

如果 someobject 类属性已经存在?

这个对象的行为是什么?

0 投票
1 回答
504 浏览

iphone - 使用自动释放返回对象但我仍然泄漏内存

我正在泄漏内存:

我的自定义课程:

在应用程序委托中我启动它:

这是怎么泄露的?我正确地释放或自动释放它们。如果我不保留这些,应用程序会立即崩溃,因为我猜是早期版本。如果我添加另一个版本,它也会崩溃。

0 投票
2 回答
4165 浏览

objective-c - 自动释放的对象何时真正释放?

我是objective-c的新手,我正在尝试理解内存管理以使其正确。

在阅读了苹果出色
的 Cocoa 内存管理编程指南之后,我唯一关心的是当一个自动释放的对象在 iphone/ipod 应用程序中被释放时。我的理解是在运行循环的末尾。但是什么定义了应用程序中的运行循环?

所以我想知道下面的代码是否正确。假设一个对象

此代码有效吗?

从苹果文本中,我了解到从functionA返回的 NSString 在 functionB的范围内有效。我不确定它在functionCviewDidLoad中是否有效。

谢谢!

0 投票
4 回答
2304 浏览

objective-c - 触发自动释放的 NSOperationQueue 是否危险?

我有一个需要相当长时间的任务,应该在后台运行。根据文档,这可以使用NSOperationQueue. 但是,我不想保留 的类全局副本,NSOperationQueue因为我真的只将它用于那一项任务。因此,我只是将它设置为自动释放,并希望它在任务完成之前不会被释放。有用。
像这样:

不过,我有点担心。这能保证工作吗?或者可能operationQueue会在某个时候被释放并接受theTask它?

0 投票
2 回答
1857 浏览

iphone - 返回 autorelease NSString 仍然会导致内存泄漏

我有一个简单的函数,它在解码后返回一个 NSString 。我在整个应用程序中经常使用它,每次我使用它时它似乎都会造成内存泄漏(根据“泄漏”工具)。泄漏告诉我问题出在我分配要返回的 NSString 的位置上,即使我自动释放它。这是功能:

我对 [autorelease] 的理解是它应该以这种方式使用……我想在我的函数中保留对象足够长的时间以将其返回,然后让对象稍后自动释放。所以我相信我可以通过这样的代码使用这个功能,而无需手动释放任何东西:

但是这个过程正在报告泄漏,我不明白如何更改它以避免泄漏。我究竟做错了什么?

0 投票
1 回答
102 浏览

cocoa - 自动释放的对象是否总是在整个方法中存活?

如果我是正确的,那么自动释放对象池的释放与运行循环有关。我几乎不知道“运行循环”是什么,但我的问题是,对象是否有可能被释放在到达方法结束之前?

0 投票
3 回答
1807 浏览

objective-c - 我可以提前释放自动释放对象吗?

即如果我这样做会导致对象立即被释放而不必被池释放?

在文档中找不到关于此的明确解释。