-3

我正在转换为 Objective-C ARC,下面的代码出现错误。

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

XCode 建议我们改成下面这个。一旦像下面这样更改,就没有错误了。但是应用程序崩溃了。

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

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

4

1 回答 1

2

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

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

ABMultiValueRef phones =(ABMultiValueRef)CFBridgingRelease(ABRecordCopyValue(record, kABPersonPhoneProperty));
NSString* num = (__bridge NSString*)ABMultiValueCopyValueAtIndex(phones, 0);
于 2013-08-14T13:54:10.937 回答