gpt4 book ai didi

iphone - NSKeyedUnarchiver 内存泄漏问题

转载 作者:行者123 更新时间:2023-12-03 21:24:23 26 4
gpt4 key购买 nike

我对这段代码有疑问,它在调试环境中运行。在仪器上,我发现此功能存在内存泄漏问题,仪器发出警告

类别 事件类型 时间戳 地址 大小 负责库 负责调用者27 社交网络 Malloc 00:19.951 0x3d64d20 80 基础 -[NSKeyedUnarchiver _decodeArrayOfObjectsForKey:]

- (NSMutableArray *)GetDataInstanceToUserDefaults{
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSData *storedObject = [userDefaults objectForKey:@"MyDataKey"];
NSMutableArray *data;

if(storedObject != nil)
{
NSArray *savedArray = [NSKeyedUnarchiver unarchiveObjectWithData:storedObject];
if(savedArray != nil)
data = [[NSMutableArray alloc] initWithArray:savedArray];
else
data = [[NSMutableArray alloc] init];
}else{
data = [[NSMutableArray alloc] init];
}
return data;

}

我不明白我的问题出在哪里?

感谢您的支持

编辑:顺便说一句,我应该提供有关此问题的更多详细信息,此函数(如您所见)正在存储我的对象。我的对象是自定义类并存储在 NSMutableArray 中。

我已经在我的自定义类中添加了这些方法

-(void)encodeWithCoder:(NSCoder *)coder{
-(id)copyWithZone:(NSZone*)zone {
-(id)initWithCoder:(NSCoder *)coder{

最佳答案

我认为问题很可能出在自定义类的 initWithCoder: 方法中。它正在泄漏,但分析器报告它位于存档器中。

与您的问题无关,我会警告您不要使用 [[NSMutableArray alloc] init] 来初始化集合,尤其是可变集合。请改用[[NSMutableArray alloc] initWithCapacity:1]。我曾在仅使用 init 时遇到过奇怪的问题,但使用 initWithCapacity 解决了这些问题。

关于iphone - NSKeyedUnarchiver 内存泄漏问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1933285/

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