我从开源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)。
答案 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上使用。