ABMultiValueRef phones = ABRecordCopyValue(ref, kABPersonPhoneProperty);
if ( phones ) {
for(int i=0;i<ABMultiValueGetCount(phones);i++) {
NSString* label=(NSString*)ABMultiValueCopyLabelAtIndex(phones, i);
CFRelease ((CFTypeRef)label);
CFRelease ((CFTypeRef)label);
}
}
CFRelease(phones);
为什么标签可以发布两次而没有任何错误?但手机不能。 如果没有两次释放标签,是否有任何内存泄漏?
我在xcode4模拟器4.3中成功运行了以上代码
答案 0 :(得分:0)
为什么这不会崩溃并不重要。你绝对不应该这样做。此功能与您签订的合同是它返回一个您必须完全释放的值。无论它在内部如何处理这个值(例如缓存)都可能导致这种情况不会崩溃是无关紧要的。