问题标签 [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.

0 投票
1 回答
405 浏览

xcode - XCode – XCode 4.2 beta ARC 无法编译

我正在尝试在 XCode 4.2 beta (Build 4D58) 中构建一个简单的 OS X 命令行应用程序。但是当我尝试编译它时出现错误:

/Developer/SDKs/MacOSX10.7.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSZone.h:57:22:错误:'CFMakeCollectable'不可用:在自动引用计数模式下不可用[3]返回(cf ? (id)CFMakeCollectable(cf) : nil);

/Developer/SDKs/MacOSX10.7.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObject.h:173:13:错误:使用未声明的标识符'__bridge_retain' [3]返回(__bridge_retain CFTypeRef)X;

我想这与 ARC 有关,但我不确定如何编译我的应用程序?

0 投票
3 回答
1355 浏览

objective-c - 在 ARC 管理的代码中使用 __attribute__

当 ARC 来到 Objective-C 时,我尽力通读了 Clang 项目网站上发布的Objective-C 自动引用计数 (ARC)指南,以便更好地了解它的内容。我在那里发现(并且没有其他地方)提到使用__attribute__声明向 ARC 表示某些代码是否自动释放其返回值,例如 ( __attribute__((ns_returns_autoreleased))),或者它是否“使用”参数 (__attribute((ns_consumed))等​​等。

然而,该指南似乎对这些声明所具有的实际必要性几乎没有给出任何字眼。排除它们似乎没有什么区别,无论是在运行静态分析器还是在运行项目本身时。这些甚至有影响吗?用 标记方法有什么好处__attribute__((objc_method_family(new)))吗?我在 ARC 上找到的任何文章都没有提到这些说明符。也许 ARC 大师可以说明它们的用途。

(就个人而言,我包括所有相关的说明符以防万一,但发现它们使代码变得混乱和混乱。)

0 投票
4 回答
26956 浏览

ios - iOS:如何在启用 ARC 的情况下从内存中删除对象?

我正在使用 iOS 5 SDK 开发一个 iOS 应用程序,启用了自动引用计数。但是我有一个正在大量创建的特定对象,必须在一秒钟后释放,否则设备会变得非常慢。看起来它们没有发布,因为设备非常慢。启用 ARC 时有没有办法手动释放对象?

编辑:我的代码,每秒调用 200 次以产生火花。它们在 0.8 秒后淡出,因此在那之后它们就没有用了。

闪闪发光的目标代码:

0 投票
1 回答
1406 浏览

objective-c - 我们是否有支持自动引用计数的 iOS 5 的 ShareKit 更新?

我正在尝试将最初在 iOS 4.3 中开发的应用程序迁移到 iOS 5。所有第三方代码都正在使用 Xcode 的重构工具进行迁移。但它不会转换代码,并且会显示很多第三方文件(如 ShareKit 和 ASIHTTPRequest)的错误。任何人都可以帮忙吗?

0 投票
7 回答
14629 浏览

iphone - SFHFKeychainUtils。iOS 钥匙串。ARC兼容

我想知道是否有人使用 SFHFKeychainUtils 设法修改它们以与 ARC 兼容。更确切地说

我试过了

这两种方法是我设法没有出错的仅有的两种方法。通过在此处添加 objc_XXX 而不是 CFTypeRef 的任何其他方法都会出错(从 obj-c 指针到 CFTypeRef 的隐式转换在 ARC 中是不允许的,到将 x 参数传递给 y 参数会丢弃限定符)。显然,第一个代码片段也给出了错误。尽管在构建时我没有收到任何错误,但在到达这部分代码时,应用程序会因 EXC_BAD_ACCESS 而崩溃。

完整 SFHFKeychainUtils 的链接:https ://github.com/ldandersen/scifihifi-iphone/tree/master/security

请问有什么帮助吗?谢谢你。

0 投票
2 回答
3411 浏览

objective-c - 释放分配以响应低内存警告,但应用程序仍然崩溃

我正在构建一个应用程序来查看我从 API 中提取的照片。每张照片的大小约为 1MB。我设置了一个“幻灯片”来显示一张照片,然后转到下一张,就像用户实际使用该应用程序一样。我正在仪器中的 iPad 1 上进行测试。

当我的应用收到内存不足警告时,我将转储当前未向用户显示的所有照片,以及从 API 返回的所有缓存模型数据。我看到我在 Instruments 中的分配显着下降,虚拟内存使用也出现了类似的下降。即使消耗的内存有所下降,我的应用程序仍然被操作系统杀死。

应用程序响应 2-3 个内存警告而不会在被终止之前崩溃。

我最近切换到 ARC,所以也许有一些我不明白的地方?我认为将我的引用设置为 nil 就足够了。这是我的内存模型转储其图像数据的代码:

哪个被调用。我还有一个 NSMutableDictionary,当我收到内存不足警告时,我正在调用 removeAllObjects。我在设备控制台中得到以下信息:

这是我的分配/VM 工具,直到崩溃。

有谁知道为什么我的应用程序被杀死,即使它正在释放内存?

0 投票
11 回答
125812 浏览

ios - 在 ARC 下,IBOutlets 应该强还是弱?

我正在使用 ARC 专门为 iOS 5 开发。IBOutlets to UIViews(和子类)应该是orstrongweak

以下:

将摆脱所有这些:

这样做有什么问题吗?模板使用strong的是从“Interface Builder”编辑器直接连接到标题时创建的自动生成的属性,但为什么呢?UIViewController已经有一个对其的strong引用,它view保留了它的子视图。

0 投票
2 回答
6323 浏览

ios - UIViewController 不保留其以编程方式创建的 UISearchDisplayController

在关于属性1的UIViewController 文档中,它说:searchDisplayController

如果您以编程方式创建搜索显示控制器,则此属性由搜索显示控制器在初始化时自动设置。

当我这样创建我的 UISearchDisplayController 时:

-[UIViewController searchDisplayController]不是nil。但是,它在事件循环完成后被取消,这导致当我在搜索栏内触摸时搜索显示控制器不显示。没有什么崩溃。这很奇怪。如果我省略对 的调用autorelease,一切正常:

但是,泄漏了UISearchDisplayController(我用 Instruments 验证了这一点)。由于该searchDisplayController 属性被标记为(nonatomic, retain, readonly)我期望它UISearchDisplayController在设置后会保留。

这篇stackoverflow文章是相关的。

0 投票
5 回答
7094 浏览

ios - ARC下的IBOutlet和viewDidUnload

SO here上有一个与此类似的问题,但是我只想澄清一些在那里没有完全解释的东西。

我知道所有的代表和出口——实际上任何对“父”对象的引用,作为一个好公民并考虑一下对象图——应该将弱引用归零。由于归零弱指针的性质会在引用对象的保留计数达到零时自动下降到零,这是否意味着viewDidUnload现在不需要将 IBOutlets 设置为 nil?

所以,如果我这样声明我的出口:

下面的代码有什么作用吗?

0 投票
2 回答
1126 浏览

objective-c - 如何将应用程序迁移到 iOS 5?(或打开 ARC)

我有一个正在开发的应用程序,我刚开始使用 iOS 5。我想开始使用自动引用计数,但我不确定迁移到 iOS 5 或至少需要采取哪些步骤打开 ARC。