gpt4 book ai didi

iphone - 从AddressBook iPhone获取Notes时应用程序崩溃

转载 作者:行者123 更新时间:2023-12-03 16:55:51 25 4
gpt4 key购买 nike

这是我从AddressBook获取注释的代码。

 +(NSString*)getNote:(ABRecordRef)record {

return ABRecordCopyValue(record, kABPersonNoteProperty);
}

但是在上面的实现中,我有内存泄漏。因此,为了消除内存泄漏,我编写了以下代码
    +(NSString*)getNote:(ABRecordRef)record {

NSString *tempNotes = (NSString*)ABRecordCopyValue(record, kABPersonNoteProperty);
NSString *notes = [NSString stringWithString:tempNotes];
[tempNotes release];
return notes;

}

如果我写上面的代码,我的应用程序崩溃。怎么了谢谢。

更新:我称这种方法如下:
notes = [AddreesBook getNote:record];

其中notes是我的ivar,我正在dealloc方法中释放它。

最佳答案

您的第一个实现违反了所有权规则:

Memory Management Rules

也就是说,您正在使用的API调用包含“复制”,但是您将其视为自动发布的对象。

鉴于您要在修订的实现中返回一个自动释放的对象,我怀疑您没有保留返回的注释字符串。您可以确定是否是这种情况,如果在调试器下运行时您的应用程序崩溃了NSPopAutoreleasePool()

一个简单的测试是将-retain发送到您返回的note对象,并查看崩溃是否消失:

NSString    *note = [ MyAddressBook getNote: abRecord ];

[ note retain ];
/* ... use note ... */

/* we retained the object, we must also release it when done with it. */
[ note release ];

关于iphone - 从AddressBook iPhone获取Notes时应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10074567/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com