问题标签 [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.
objective-c - 是否有一条快速规则可以知道何时释放 Objective-C 变量?
使用 Objective-C 时是否有任何经验法则可以帮助我了解何时是释放变量的正确时间?
objective-c - 如何为项目中的单个文件禁用 ARC?
我在我的项目中成功使用了 ARC。但是,我遇到了一些文件(例如,在单元测试和模拟对象中),其中 ARC 的规则现在有点脆弱。我记得听说有一种方法可以在每个文件的基础上禁用 ARC,尽管我一直找不到这个选项。
这可能吗?如何在每个文件的基础上禁用 ARC?
objective-c - 引用计数或保留计数问题(内存管理)
以下代码工作正常,您可以在系统上运行它以进行确认。
我的问题是,如您所见,仅当保留计数达到零时才调用 dealloc 方法,这意味着为 RetainTracker 对象释放了内存。但是,问题是当我在 dealloc 方法中记录保留计数时,它仍然显示保留计数为 1。这是为什么呢?
这是我的代码:
以下是日志:
objective-c - 需要发布两次吗?
我似乎无法在任何地方找到答案。我在为 iOS 开发的 Objective-C 中使用手动内存管理。
我编写了一个从十六进制字符串中获取 UIColor 的便捷函数。在其中,它返回
显然在某些平台上(我们有一些设备,包括 iOS 8-9),该对象将在退出函数时被销毁,因此它返回的 UIColor* 无法使用。所以现在,我们将其更改为
我的问题是当我使用完这个对象后,我必须释放它两次吗?一次分配,一次保留?这对我来说似乎很奇怪,我在任何地方都无法在网上找到它。
如果我不保留,它会在退出函数时(在某些平台上)使函数无用。如果我保留,我需要在完成后释放两次?
编辑:
“...,它通常保证在接收它的方法或函数内保持有效。如果您希望它在该范围之外保持有效,您应该保留或复制它。”
所以我没有做任何不寻常的事情。文档说如果“我希望它在函数范围之外保持有效”,我“应该保留它”。我会尝试@FreeNickname 的建议。这是最有意义的。
ios - 由于 NSDictionary 自动释放,应用程序在 iOS7 中崩溃,但在 8 和 9 中没有
如果我们从上面的代码中删除 Autorelease,如果不是应用程序崩溃,它在 iOS7 中工作
我主要担心的是为什么它不会在 iOS8 和 9 中崩溃,而只有在 iOS7 中的崩溃是与这些版本的自动发布相关的变化
ios - nsstring 的 IOS 版本和分配消息差异
我正在学习内存管理概念。我创建了一个string1
并将其分配给string1
另一个string2
,现在我将其发布string1
。这里string2
保留计数为 1,但在NSLog
声明中它提供 EXC Bad 访问。
当我分配字符串时
这是否意味着 string2 也有一个自动释放消息,因为如果我这样做string2 = [string1 copy];
而不是string2 = string1;
它不会崩溃。所以我想问一下崩溃是否是因为它有 autorelease 消息string2
以及它与string2
release 命令的关系。请指教!
c# - 在 xamarin 中启用 ARC
如果 ARC 未启用,大多数安全和渗透工具都会报告。
据我所知,我们不能在 xamarin 中执行此操作,因为我们这里没有构建设置。
此标志只能在构建设置中设置。
即使我们可以,它也行不通,因为 xamarin 使用 C# 和 MRC 自行管理内存。
谁能解释我如何做或不做,或者我的理解是错误的
编辑:
我们可以通过构建设置将 ARC 开启到一个完整的项目中
但是在 xam studio 中没有办法做到这一点......在 mtouch 中设置值也会引发错误
objective-c - 如何在没有不必要的保留/释放调用的情况下安全地在 ARC 和 MRC 方法之间切换?
我有一个带有以下代码的 ARC 类:
object
的-doStuffWithObject:
方法是用ARC编译的,是这样的:
DoStuffHelper
,一个 C 函数,不使用 ARC 编译(出于性能原因)。在DoStuffHelper
中,我是否需要-retain
在开始时为他们打电话object
,otherObject
最后为他们打电话-release
?
ios - 如何为项目中所有目标的某些文件禁用 ARC?
我检查了运行良好的票证(通过点击键盘上的 Enter 并添加“-fno-objc-arc”来添加编译源),但我的问题是我的项目中有近 80 个目标。
我想知道是否有办法排除所有 80 个目标的文件?
提前致谢。