首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ARC的peoplePicker内存泄漏

使用ARC的peoplePicker内存泄漏
EN

Stack Overflow用户
提问于 2012-01-06 13:51:50
回答 2查看 827关注 0票数 0

我在我的项目中使用了ARC,并在以下内容中收到了潜在内存泄漏的警告(参见注释行)。不知道该怎么处理。

代码语言:javascript
复制
-( BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker 
  shouldContinueAfterSelectingPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier{

ABMultiValueRef phoneProperty = ABRecordCopyValue(person,property);
  // Call to function 'ABRecordCopyValue' returns a Core Foundation object with a +1 retain count

int idx = ABMultiValueGetIndexForIdentifier (phoneProperty, identifier);    

emailToValue= (__bridge_transfer NSString *)ABMultiValueCopyValueAtIndex(phoneProperty,idx);
  // Object Leaked: object allocated and stored into 'phoneProperty' is not referenced   later in this execution path and has a retain count of +1

任何建议都将不胜感激。

提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2012-01-06 14:10:17

ARC只管理Objective-C对象的内存,因此您的应用需要使用CFRelease释放ABRecordCopyValue返回的phoneProperty (方法中的Copy表示它已被保留)。

票数 3
EN

Stack Overflow用户

发布于 2012-02-03 15:46:10

无论是否使用ARC,你们都必须自己处理CFMemory。在离开之前添加以下代码:

代码语言:javascript
复制
if (phoneProperty){
CFRelease(phoneProperty);
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8753947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档