问题标签 [manual-retain-release]

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 投票
4 回答
461 浏览

objective-c - 是否有一条快速规则可以知道何时释放 Objective-C 变量?

使用 Objective-C 时是否有任何经验法则可以帮助我了解何时是释放变量的正确时间?

0 投票
18 回答
337657 浏览

objective-c - 如何为项目中的单个文件禁用 ARC?

我在我的项目中成功使用了 ARC。但是,我遇到了一些文件(例如,在单元测试和模拟对象中),其中 ARC 的规则现在有点脆弱。我记得听说有一种方法可以在每个文件的基础上禁用 ARC,尽管我一直找不到这个选项。

这可能吗?如何在每个文件的基础上禁用 ARC?

0 投票
1 回答
57 浏览

ios - NSDate 抛出 BAD_EXCESS 是为了什么?

我有下面。

当我尝试如下打印当前日期时,它会崩溃说 BAD_EXCESS

下面是相同的屏幕截图。

在此处输入图像描述

我没有在我的项目中使用 ARC。

知道出了什么问题吗?

0 投票
2 回答
83 浏览

objective-c - 引用计数或保留计数问题(内存管理)

以下代码工作正常,您可以在系统上运行它以进行确认。

我的问题是,如您所见,仅当保留计数达到零时才调用 dealloc 方法,这意味着为 RetainTracker 对象释放了内存。但是,问题是当我在 dealloc 方法中记录保留计数时,它仍然显示保留计数为 1。这是为什么呢?

这是我的代码:

以下是日志:

0 投票
3 回答
501 浏览

objective-c - 需要发布两次吗?

我似乎无法在任何地方找到答案。我在为 iOS 开发的 Objective-C 中使用手动内存管理。

我编写了一个从十六进制字符串中获取 UIColor 的便捷函数。在其中,它返回

显然在某些平台上(我们有一些设备,包括 iOS 8-9),该对象将在退出函数时被销毁,因此它返回的 UIColor* 无法使用。所以现在,我们将其更改为

我的问题是当我使用完这个对象后,我必须释放它两次吗?一次分配,一次保留?这对我来说似乎很奇怪,我在任何地方都无法在网上找到它。

如果我不保留,它会在退出函数时(在某些平台上)使函数无用。如果我保留,我需要在完成后释放两次?

编辑:

https://developer.apple.com/library/ios/documentation/General/Conceptual/DevPedia-CocoaCore/MemoryManagement.html

“...,它通常保证在接收它的方法或函数内保持有效。如果您希望它在该范围之外保持有效,您应该保留或复制它。”

所以我没有做任何不寻常的事情。文档说如果“我希望它在函数范围之外保持有效”,我“应该保留它”。我会尝试@FreeNickname 的建议。这是最有意义的。

0 投票
3 回答
91 浏览

ios - 由于 NSDictionary 自动释放,应用程序在 iOS7 中崩溃,但在 8 和 9 中没有

如果我们从上面的代码中删除 Autorelease,如果不是应用程序崩溃,它在 iOS7 中工作

我主要担心的是为什么它不会在 iOS8 和 9 中崩溃,而只有在 iOS7 中的崩溃是与这些版本的自动发布相关的变化

0 投票
1 回答
38 浏览

ios - nsstring 的 IOS 版本和分配消息差异

我正在学习内存管理概念。我创建了一个string1并将其分配给string1另一个string2,现在我将其发布string1。这里string2保留计数为 1,但在NSLog声明中它提供 EXC Bad 访问。

当我分配字符串时

这是否意味着 string2 也有一个自动释放消息,因为如果我这样做string2 = [string1 copy];而不是string2 = string1;它不会崩溃。所以我想问一下崩溃是否是因为它有 autorelease 消息string2以及它与string2release 命令的关系。请指教!

0 投票
1 回答
1218 浏览

c# - 在 xamarin 中启用 ARC

如果 ARC 未启用,大多数安全和渗透工具都会报告。

据我所知,我们不能在 xamarin 中执行此操作,因为我们这里没有构建设置。

此标志只能在构建设置中设置。

即使我们可以,它也行不通,因为 xamarin 使用 C# 和 MRC 自行管理内存。

谁能解释我如何做或不做,或者我的理解是错误的

编辑:

我们可以通过构建设置将 ARC 开启到一个完整的项目中

但是在 xam studio 中没有办法做到这一点......在 mtouch 中设置值也会引发错误

0 投票
4 回答
285 浏览

objective-c - 如何在没有不必要的保留/释放调用的情况下安全地在 ARC 和 MRC 方法之间切换?

我有一个带有以下代码的 ARC 类:

object-doStuffWithObject:方法是用ARC编译的,是这样的:

DoStuffHelper,一个 C 函数,使用 ARC 编译(出于性能原因)。在DoStuffHelper中,我是否需要-retain在开始时为他们打电话objectotherObject最后为他们打电话-release

0 投票
0 回答
27 浏览

ios - 如何为项目中所有目标的某些文件禁用 ARC?

我检查了运行良好的票证(通过点击键盘上的 Enter 并添加“-fno-objc-arc”来添加编译源),但我的问题是我的项目中有近 80 个目标。

我想知道是否有办法排除所有 80 个目标的文件?

提前致谢。