automatic-ref-counting相关内容

自定义 dealloc 和 ARC (Objective-C)

在我的小 iPad 应用程序中,我有一个使用观察者的“切换语言"功能.每个视图控制器在其 viewDidLoad: 期间向我的观察者注册自己. - (void)viewDidLoad{[超级viewDidLoad];[观察者注册对象:自我];} 当用户点击“更改语言"按钮时,新语言会存储在我的模型中,观察者会收到通知并在其注册的对象上调用 updateUi: 选择器. 这很有效,除非我在 ..
发布时间:2021-12-05 20:25:24 移动开发

ARC 是否支持调度队列?

我正在阅读苹果关于“调度队列的内存管理"的文档: 即使您实现了垃圾收集应用程序,您仍然必须保留和释放您的调度队列和其他调度对象.Grand Central Dispatch 不支持回收内存的垃圾收集模型. 我知道 ARC 不是垃圾收集器,但我想确定我不需要 dispatch_retain 和 dispatch_release 我的 dispatch_queue_t 解决方案 简 ..

总是将 self 的弱引用传递到 ARC 中的块中?

我对 Objective-C 中的块使用有点困惑.我目前使用 ARC 并且我的应用程序中有很多块,目前总是引用 self 而不是它的弱引用.这可能是这些块保留 self 并防止它被释放的原因吗?问题是,我应该总是在块中使用 self 的 weak 引用吗? -(void)handleNewerData:(NSArray *)arr{ProcessOperation *操作 =[[ProcessO ..

Objective-C 中的自动引用计数不能防止或最小化哪种泄漏?

在 Mac 和 iOS 平台中,内存泄漏往往是由未释放的指针引起的.传统上,检查您的分配、副本和保留以确保每个都有相应的发布消息一直是最重要的. Xcode 4.2 附带的工具链在最新版本的 LLVM 编译器中引入了自动引用计数 (ARC),完全消除了这种情况通过让编译器为您进行内存管理来解决问题.这非常酷,它确实减少了许多不必要的、平凡的开发时间,并防止了许多粗心的内存泄漏,这些泄漏很容易 ..

ARC 还是不 ARC?优缺点都有什么?

我还没有使用 ARC,因为我目前正在处理的项目中的大部分代码都是在 iOS 5.0 之前编写的. 我只是想知道,不手动保留/释放(以及由此产生的可能更可靠的代码?)的便利性是否超过了使用 ARC 的任何“成本"?您对 ARC 有何体验,您会推荐它吗? 所以: ARC 能为项目带来多少好处? ARC 是否有与 Java 中的垃圾收集类似的成本? 您是否一直在使用 ARC,如果使 ..
发布时间:2021-12-02 18:06:26 移动开发

为什么 ARC 仍然需要@autoreleasepool?

对于 ARC(自动引用计数),我们根本不需要考虑使用 Objective-C 对象进行内存管理.不再允许创建 NSAutoreleasePools,但是有一个新的语法: @autoreleasepool {…} 我的问题是,当我不应该手动发布/自动发布时,为什么我需要它? 编辑:总结一下我从所有回答和评论中得到的内容: 新语法: @autoreleasepool { ... ..

新的自动引用计数机制是如何工作的?

有人可以向我简要解释一下 ARC 的工作原理吗?我知道它与垃圾收集不同,但我只是想知道它究竟是如何工作的. 另外,如果 ARC 在不影响性能的情况下做 GC 所做的事情,那么 Java 为什么要使用 GC?为什么它不也使用 ARC? 解决方案 每个使用 Objective-C 的新开发人员都必须学习何时保留、释放和自动释放对象的严格规则.这些规则甚至指定了暗示从方法返回的对象的保留计 ..

Objective-C 声明的@property 属性(非原子、复制、强、弱)

当我必须使用每个属性时,谁能给我详细解释一下:nonatomic、copy、strong、weak 等,用于声明的属性,并解释每个属性的作用?某种例子也会很棒.我正在使用 ARC. 解决方案 Nonatomic 非原子不会 通过 @synthesize 访问器生成线程安全例程.atomic 将生成线程安全访问器,因此 atomic 变量是线程安全的(可以从多个线程访问而不会损坏数据) ..

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

我在我的项目中成功使用了 ARC.但是,我遇到了一些文件(例如,在单元测试和模拟对象中),其中 ARC 的规则现在有点脆弱.我记得听说有一种方法可以在每个文件的基础上禁用 ARC,但我一直找不到这个选项. 这可能吗?如何在每个文件的基础上禁用 ARC? 解决方案 可以通过为单个文件添加 -fno-objc-arc 编译器标志来禁用单个文件的 ARC. 您在目标 -> 构建阶段 ..

弱引用和无主引用有什么区别?

斯威夫特有: 强有力的参考 弱引用 无主引用 无主引用与弱引用有何不同? 什么时候使用无主引用是安全的? 无主引用是否存在安全风险,例如 C/C++ 中的悬垂指针? 解决方案 weak 和 unowned 引用都不会创建 strong 保留引用的对象(也就是它们不会增加保留计数以防止 ARC 取消分配引用的对象). 但为什么是两个关键字?这种区别与 Opt ..

我们应该总是在 Swift 的闭包中使用 [unowned self]

在 WWDC 2014 session 403 中级 Swift 和 转录本,有以下幻灯片 演讲者说那种情况下,如果我们不在那里使用[unowned self],就会造成内存泄漏.这是否意味着我们应该始终在闭包中使用 [unowned self] ? 在 ViewController.swift 的第 64 行天气应用,我不使用[unowned self].但是我通过使用一些 @IBO ..
发布时间:2021-12-02 15:21:20 移动开发

实现 API 时如何避免在块中捕获 self ?

我有一个可用的应用程序,我正在努力将它转换为 Xcode 4.2 中的 ARC.预检查警告之一涉及在导致保留循环的块中强烈捕获 self.我制作了一个简单的代码示例来说明这个问题.我相信我明白这意味着什么,但我不确定实现此类场景的“正确"或推荐方法. self 是类 MyAPI 的一个实例 下面的代码经过简化,仅显示与我的问题相关的对象和块的交互 假设 MyAPI 从远程源获取数据,My ..

Objective-C ARC:强 vs 保留和弱 vs 分配

ARC 引入的属性有两个新的内存管理属性,strong 和 weak. 除了copy,这显然是完全不同的东西,strong vs retain 和 有什么区别吗?弱 vs assign? 根据我的理解,这里唯一的区别是 weak 会将 nil 分配给指针,而 assign 不会,这意味着一旦指针被释放,当我向指针发送消息时,程序就会崩溃.但是如果我使用 weak,这将永远不会发生,因为 ..
发布时间:2021-12-01 17:33:56 移动开发

在 iOS 上发送 HTTP POST 请求

我正在尝试使用我正在开发的 iOS 应用程序发送 HTTP Post,但推送从未到达服务器,尽管我确实收到了代码 200 作为响应(来自 urlconnection).我从来没有得到服务器的响应,服务器也没有检测到我的帖子(服务器确实检测到来自 android 的帖子) 我确实使用 ARC,但已将 pd 和 urlConnection 设置为强. 这是我发送请求的代码 NSMuta ..

当 Leaks 工具没有显示内存泄漏时,如何调试它们?

我有一个用 Swift 编写的 iOS 应用程序正在泄漏内存 - 在某些情况下,一些对象应该被释放,但它们没有.我通过简单地添加这样的 deinit 调试消息来了解这个问题: deinit {println("DEINIT: KeysProvider 已发布")} 因此,在应该导致对象释放的此类事件之后,控制台中应该出现 deinit 消息.但是,对于一些应该释放的对象,消息丢失了.尽管如此, ..

AutoLayout:removeFromSuperview/removeConstraints 抛出异常并严重崩溃

我们有选择地使用自动布局约束,主要是根据可编辑字段元素(通常为 UITextView、UITextField)定位标签.然而,由于为这些字段实现了自动布局,我们会在卸载视图、解除分配等时看到令人讨厌的异常和崩溃.异常发生是因为它试图在卸载视图之前从视图中删除约束. 我们的视图/控制器层次结构是这样的: UITableViewController(简单的样式,但单元格外观模仿分组样式)-->UI ..
发布时间:2021-11-30 21:08:23 移动开发

ARC 和 ASIHTTPRequest

我有一个奇怪的问题. 我在启用 ARC 的 iOS 5 项目中使用 ASIHTTPRequest.由于 ASIHTTPRequest 不支持 ARC,我在所有单独的 ASIHTTPRequest 文件上禁用了 ARC. 但是,当我尝试编译我的项目时,xcode 仍然认为这些文件启用了 ARC 并且它会抱怨. 我做错了什么还是xcode中的一个错误?不要告诉我使用重构工具将 ASI ..