如何解决在地址簿中泄露的对象

时间:2013-11-11 06:47:36

标签: ios objective-c

  ABMultiValueRef phoneNumbers = ABRecordCopyValue((__bridge  ABRecordRef)([arrTemp1 objectAtIndex:i]),
                                                                 kABPersonPhoneProperty);
                if (ABMultiValueGetCount(phoneNumbers) > 0) {
                    phone = (__bridge_transfer NSString*)
                    ABMultiValueCopyValueAtIndex(phoneNumbers, 0);
                } else
                {
                    phone = @"[None]";
                }

在这行代码之后,我得到“对象泄漏:分配并存储到'phoneNumber'中的对象以后未在此执行路径中引用,并且保留计数为+1”。我看到几个类似的帖子,但没有得到我的问题的确切解决方案。由于这个泄漏我的应用程序崩溃。所以任何人都知道这一点请帮帮我

2 个答案:

答案 0 :(得分:1)

试试这段代码。

ABMultiValueRef phoneNumbers = ABRecordCopyValue((__bridge  ABRecordRef)([arrTemp1 objectAtIndex:i]),kABPersonPhoneProperty);

if (ABMultiValueGetCount(phoneNumbers) > 0) {
      phone = (__bridge_transfer NSString*)ABMultiValueCopyValueAtIndex(phoneNumbers, 0);
} else {
      phone = @"[None]";
}

CFRelease(phoneNumbers);

答案 1 :(得分:0)

由于这些对象是CoreFoundation对象,您应该使用CFRelease释放被占用的内存。您必须使用CFRelease(phoneNumbers); .签出以下Link以释放ABMultiValueRef对象占用的内存。