1

我有一些来自开源 Objective-C 库的代码,当我编译时,会给出如下警告:

'__bridge_transfer' casts have no effect when not using ARC

产生这个的代码行是:

  NSArray *keys = [[NSArray alloc] initWithObjects: (__bridge_transfer NSString *) kSecClass, kSecAttrAccount, kSecAttrService, nil];

如何摆脱这些警告?

我正在使用 Xcode 版本 4.6.3 (4H1503)。

4

3 回答 3

1

听起来您正在将 ARC 代码编译为 MRR。您需要使用命令行选项-fobjc-arc,Xcode 项目设置中有一行名为“Automatic Reference Counting”。

于 2013-09-06T15:25:51.133 回答
0

愚蠢的解决方案一=>打开弧

愚蠢的解决方案二

#if __has_feature(objc_arc)
NSArray *keys = [[NSArray alloc] initWithObjects: (__bridge_transfer NSString *) kSecClass, kSecAttrAccount, kSecAttrService, nil];
#else
NSArray *keys = [[NSArray alloc] initWithObjects: (NSString *) kSecClass, kSecAttrAccount, kSecAttrService, nil];
#endif
于 2013-09-06T15:26:21.613 回答
0

CFbridgingRetain()并且CFBridgingRelease()可以很好地用于 ARC、GC 和 MRC。

于 2013-09-07T02:33:17.283 回答