问题标签 [automatic-ref-counting]
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 - AVAudioPlayer 立即停止播放 ARC
我正在尝试通过播放 MP3AVAudioPlayer
我认为相当简单的 MP3。不幸的是,它并不完全有效。这是我所做的一切:
- 为了测试,我在 Xcode 中创建了一个新的 iOS 应用程序(Single View)。
#import <AVFoundation/AVFoundation.h>
我将 AVFoundation 框架添加到项目以及ViewController.m
我在 Apps 'Documents' 文件夹中添加了一个 MP3 文件。
我将其更改
ViewControllers
viewDidLoad:
为以下内容:
代码:
不幸的是,音频显然在开始播放后立即停止。如果我取消注释sleepForTimeInterval
它会播放 20 秒然后停止。仅在使用 ARC 编译时才会出现此问题,否则,它可以完美运行。
cocoa - 如何在启用 ARC 的情况下部署到 Snow Leopard
我有一个想要迁移到 ARC 的 OSX 应用程序。如果我将基本 SDK 设置为 10.7,一切正常。但是当我将它设置为 10.6 时它不起作用(因为它没有找到 _objc_release 等)。那么如何在启用 ARC 的情况下将我的应用程序部署到 10.6?
objective-c - iOS 3.x 上的自动引用计数
使用 arc 打开编译的应用程序是否适用于 iOS 3.1.x 设备?理想情况下,我想让我们的应用程序仅适用于 iOS 4.x 及更高版本,但我们仍有一些用户运行 iOS 3.x。我不再可以访问装有 iOS 3 的设备。
有人测试过吗?
objective-c - 在预编译中检查 ARC
我有一个 iOS 重构库,我想使用和不使用 ARC 编译选项。有没有办法在编译期间检测,比如#ifdef
ARC 是否可用?
avfoundation - Automatic Retain Count, AVFoundation:包含非客观 C 对象的字典。如何用 ARC 做到这一点?
我实际上正在将我的一些源文件转换为 ARC。ARC 非常好,节省时间和内存泄漏。实际上,我正在尝试转换我的 AVFoundation 代码,并在一行非常特殊的代码中达到了我的极限:
“色彩空间”是 CGColorSpaceRef 又名 CGColorSpace* 的类型。CGColorSpace 是一个结构体,不能转换为 id。我对此感到非常惊讶,因为代码总是对我有用(CIImage 正确使用了色彩空间)。我无法使用 ARC 运行编译器,因为色彩空间不是客观的 C 对象。编译器(使用 ARC)拒绝将颜色空间添加到字典中。
有谁知道如何替换这本字典中的“颜色空间”,或者如何告诉编译器,使用这个颜色空间指针没问题?
ios - ARC Objective-C 中的输出参数
我正在使用Objective-C,并且在使用ARC编译器编译代码时,我不知道如何创建和调用没有参数的方法。
这是我试图在非 ARC Objective-C 中完成的事情(无论如何这可能是错误的)。
我在这里阅读了文档: https ://clang.llvm.org/docs/AutomaticReferenceCounting.html
...但是我发现很难得到任何可以编译的东西,更不用说任何正确的东西了。任何人都能够以适合 ARC Objective-C 的方式重写上述代码的 jist 吗?
iphone - iOS 4 真的支持 ARC 吗?iOS 4.2 SDK 在链接时缺少与 ARC 相关的符号
自从 ARC 首次宣布它是一个编译时的东西并且将与 iOS 4 向后兼容以来,我已经阅读和听说过。我已经使用 Xcode 4.2 的自动重构成功地将我的项目重构为 ARC,并且在针对iOS 5.0 SDK,它工作正常。但是,如果我尝试针对我的 iOS 4.2 SDK 进行编译,它会在链接时失败,缺少以下符号:
- _objc_retainAutoreleaseReturnValue
- _objc_autoreleaseReturnValue
- _objc_storeStrong
- _objc_retain
- _objc_release
- _objc_retainAutoreleasedReturnValue
我检查了,这些符号出现在 5.0 但不是 4.2:
这是否意味着苹果在撒谎?相反,我假设我很困惑并且做错了什么,但我不知道是什么。
这是 Xcode 4.2 (Build 4C199) 的 GM 版本
objective-c - ARC:使用自定义设置器转换保留的声明属性
我正在尝试将项目转换为使用 ARC。
我有一个这样的声明属性:
接口中setter方法的声明:
我有一个如下所示的 setter 实现:
尝试使用“转换为 Objective-C ARC ...”工具时出现错误:
错误:属性“someProperty”的类型与访问器“setSomeProperty:”的类型不匹配 [-Werror,3]
xcode - Xcode 和 ARC 调试问题(跳过 dealloc)
我花了一些时间调试 ARC 和自定义 dealloc 函数的一个奇怪问题。
- 我正在继承
NSOperation
类 - 我为此操作设置了完成块
- 该操作被非常扁平对象的强属性引用(无方法,自动 ivars,两个强属性)让我们调用这个对象
DataRequest
- 遵循所有准则,完成块仅使用对本地对象的弱引用(包括操作本身)
- 编译器和分析器都不会产生任何问题
DataRequest
持有对我生成的操作的唯一引用,并在操作完成块中被销毁。它总是被摧毁(它dealloc
总是被执行)- 我的操作有一个习惯
dealloc
。我只有一个 NSLog 调用。
...问题是:
如果我在调试器中运行它,则永远不会命中 dealloc 中的断点,永远不会出现日志消息。首先,我认为该操作正在泄漏。
如果我在仪器中运行它,一切都很好,系统控制台会打印消息,并且分配仪器报告操作正在从正确的堆栈快照中释放,包括自定义释放。未检测到泄漏。
我 100% 确定我使用相同的编译器设置进行调试和分析。
最后最令人困惑的事情是:如果我创建了一个自定义版本[DataRequest dealloc]
并投入self.operation = nil;
使用 - 即使在调试器中也一切正常。
有没有人有一些提示什么编译器链接器选项来尝试看到一些差异?这可能是 Apple 工具中的错误吗(我们所有人都处于将自己的错误归咎于一条大鱼的位置,对吗?)
...是的,我尝试过使用 GDB 和 LLDB。结果是一样的——什么可能表明什么。
我试图创建一个简约的样本,但它确实有效(确实);)
谢谢