Tom*_*myG 2 iphone xcode objective-c ios automatic-ref-counting
我从apple dev库中逐行复制了这个方法,并获得了两个NSString强制转换的转换错误.怎么解决这个问题?(我正在使用ARC)
- (BOOL)peoplePickerNavigationController:
(ABPeoplePickerNavigationController *)peoplePicker
shouldContinueAfterSelectingPerson:(ABRecordRef)person {
NSString* name = (NSString *)ABRecordCopyValue(person,
kABPersonFirstNameProperty);
self.firstName.text = name;
name = (NSString *)ABRecordCopyValue(person, kABPersonLastNameProperty);
self.lastName.text = name;
[self dismissModalViewControllerAnimated:YES];
return NO;
}
Run Code Online (Sandbox Code Playgroud)
谢谢您的帮助!
听起来你正在使用ARC.
ARC禁止在指向Objective-C对象的指针和其他类型的指针之间进行标准强制转换,包括指向CoreFoundation对象的指针.
以下代码在手动内存管理下是正确的,不能使用ARC编译:
NSString* name = (NSString *)ABRecordCopyValue(person,
kABPersonFirstNameProperty);
Run Code Online (Sandbox Code Playgroud)
要使用ARC编译它,您需要注释强制转换.见桥接演员表.
NSString* name = (__bridge_transfer NSString *)ABRecordCopyValue(person,
kABPersonFirstNameProperty);
Run Code Online (Sandbox Code Playgroud)
该__bridge_transfer注释移动值转换成ARC和所有权转移,即,它告诉ARC这个对象已经保留,而ARC不需要再保留它.
| 归档时间: |
|
| 查看次数: |
1597 次 |
| 最近记录: |