应用程序在转换为Objective-C ARC时崩溃

时间:2013-08-14 13:27:07

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

我转换为Objective-C ARC,我收到以下代码的错误。

ABMultiValueRef phones =(NSString*)CFBridgingRelease(ABRecordCopyValue(record, kABPersonPhoneProperty));

XCode建议我们改为下面的一个。一旦改变如下,就没有错误。但应用程序崩溃了。

ABMultiValueRef phones =(__bridge ABMultiValueRef)((NSString*)CFBridgingRelease(ABRecordCopyValue(record, kABPersonPhoneProperty)));

我应该怎么做以避免应用程序崩溃?

1 个答案:

答案 0 :(得分:2)

您的原始代码不正确。您告诉编译器使用ABMultiValueRef作为NSString是安全的 - 但事实并非如此。

我没试过这个,但是这样的事情可能会更好:

ABMultiValueRef phones =(ABMultiValueRef)CFBridgingRelease(ABRecordCopyValue(record, kABPersonPhoneProperty));
NSString* num = (__bridge NSString*)ABMultiValueCopyValueAtIndex(phones, 0);