不使用ARC时,'__ bridge_transfer'强制转换无效

时间:2013-09-06 15:22:34

标签: objective-c casting automatic-ref-counting

我从开源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)。

3 个答案:

答案 0 :(得分:1)

听起来您正在将ARC代码编译为MRR。您需要使用命令行选项-fobjc-arc,在Xcode项目设置中有一行称为“自动引用计数”。

答案 1 :(得分: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

答案 2 :(得分:0)

CFbridgingRetain()CFBridgingRelease()可以在ARC,GC和MRC上使用。