我的项目中有以下代码 - (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person { [popContactsForm dismissPopoverAnimated:YES]; [ssemailvc set
- (BOOL)peoplePickerNavigationController:
(ABPeoplePickerNavigationController *)peoplePicker
shouldContinueAfterSelectingPerson:(ABRecordRef)person {
[popContactsForm dismissPopoverAnimated:YES];
[ssemailvc setName: (NSString *)ABRecordCopyValue(person,kABPersonFirstNameProperty)];
ABMultiValueRef emails = (NSString *)ABRecordCopyValue(person,kABPersonEmailProperty);
if (ABMultiValueGetCount(emails)>0) {
[ssemailvc setEmail:(NSString *)ABMultiValueCopyValueAtIndex(emails,0)];
}else [ssemailvc setEmail:@""];
CFRelease(emails);
[peoplePicker dismissModalViewControllerAnimated:YES];
[popEmailForm setPopoverContentSize:CGSizeMake(350.0, 225.0)];
return NO;
}
我收到了警告
1.call to function ‘ABRecordCopyValue’ returns a corefoundation object with a +1 retain count
2.object leaked:allocated object is not referenced later in the execution and has a retain count of +1
请告诉我如何克服这个问题
如果使用ARC,则可以使用桥接转换:CFStringRef name = (CFStringRef)ABRecordCopyValue(person,kABPersonFirstNameProperty); [ssemailvc setName:(__bridge NSString*)name]; CFRelease(name);
或桥接转移:
NSString * name = (__bridge_transfer NSString *)ABRecordCopyValue(person,kABPersonFirstNameProperty); [ssemailvc setName:name];
如果您使用的是MRC:
CFStringRef name = (CFStringRef)ABRecordCopyValue(person,kABPersonFirstNameProperty); [ssemailvc setName:(NSString*)name]; CFRelease(name);
