我转换为Objective-C ARC,我收到以下代码的错误。
ABMultiValueRef phones =(NSString*)CFBridgingRelease(ABRecordCopyValue(record, kABPersonPhoneProperty));
XCode建议我们改为下面的一个。一旦改变如下,就没有错误。但应用程序崩溃了。
ABMultiValueRef phones =(__bridge ABMultiValueRef)((NSString*)CFBridgingRelease(ABRecordCopyValue(record, kABPersonPhoneProperty)));
我应该怎么做以避免应用程序崩溃?
答案 0 :(得分:2)
您的原始代码不正确。您告诉编译器使用ABMultiValueRef
作为NSString
是安全的 - 但事实并非如此。
我没试过这个,但是这样的事情可能会更好:
ABMultiValueRef phones =(ABMultiValueRef)CFBridgingRelease(ABRecordCopyValue(record, kABPersonPhoneProperty));
NSString* num = (__bridge NSString*)ABMultiValueCopyValueAtIndex(phones, 0);