[英]Potential leak of an object stored into 'name'
这是我的代码:
[ NSUInteger peopleCounter = 0; //set a initial value as ZERO.
//Create custom Contacts list
for (peopleCounter = 0; peopleCounter < [arrayOfAllPeople count]; peopleCounter++) {
ABRecordRef thisPerson = (__bridge ABRecordRef) [arrayOfAllPeople objectAtIndex:peopleCounter]; // get every person record one by one.
NSString *name = (__bridge NSString *) ABRecordCopyCompositeName(thisPerson); //get a person name
ABMultiValueRef number = ABRecordCopyValue(thisPerson, kABPersonPhoneProperty); //get a person number
//optimize a phone numbers
for (NSUInteger emailCounter = 0; emailCounter < ABMultiValueGetCount(number); emailCounter++) {
NSString *email = (__bridge NSString *)ABMultiValueCopyValueAtIndex(number, emailCounter);
][1]
当您在其名称中使用带有副本的方法(如返回Core Foundation对象的ABRecordCopyCompositeName
,如CFStringRef
您应该考虑内存管理,因为ARC不起作用,除非您告诉它应该如何处理情况。
在您的情况下,您应该使用__bridge_transfer
而不是__bridge
:
NSString *name = (__bridge_transfer NSString *) ABRecordCopyCompositeName(thisPerson); //get a person name
所以ABRecordCopyCompositeName
结果生命周期将链接到name
变量生命周期。
请注意您的示例中的ABMultiValueCopyValueAtIndex
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.