繁体   English   中英

NSKeyedUnarchiver内存泄漏问题

[英]NSKeyedUnarchiver memory leak issue

我对此代码有疑问,它正在调试环境中工作。 在仪器上,我看到此功能存在内存泄漏问题,仪器发出警告,

类别事件类型时间戳记地址大小负责的库负责的调用方27 SocialNetwork Malloc 00:19.951 0x3d64d20 80 Foundation-[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] 我已经看到了使用initWithCapacity清除的仅使用init奇怪问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM