此时不属于 iPad 中的调用方的对象的引用计数递减不正确


-(id)init
{
if (self = [super init]) 
{
    self.dmrPlaylists = [[[NSMutableArray alloc] initWithCapacity:0] autorelease];
     }
}
-(void)dealloc
{   
[self.dmrPlaylists release];
}
-(DMRPlaylist *)getDMRPlaylistByUUID:(NSString *)deviceUUID
{
if (deviceUUID == nil)
    return nil;
for(int i = 0; i < self.dmrPlaylists.count; i++)
{
    DMRPlaylist * dmrPlaylist = [self.dmrPlaylists objectAtIndex:i];
    if([dmrPlaylist.deviceUUID isEqualToString:deviceUUID])
    {
        return dmrPlaylist;
    }
}
return nil;
}

内存(核心基础/对象-C) 此时不属于调用方的对象的引用计数递减不正确。

提前谢谢。

1)不要在initdealloc方法中使用self.dmrPlaylists。 相反,请与基础变量交互。

2) 呼叫[super dealloc]

不知道警告在哪一行,无法确定,但这些都是问题。

您还没有告诉我们上述代码的哪一部分导致错误。使用调试器逐步执行它,以隔离它发生的位置并返回我们。

此外,您没有向我们提供足够的代码来了解出了什么问题。例如:

self.dmrPlaylists = [[[NSMutableArray alloc] initWithCapacity:0] autorelease];

可能最终使用自动发布的可变数组调用-setDmrPlaylists:-setDmrPlaylists:在哪里定义?它是由@property声明和@synthesize编辑声明的吗?如果是这样,它是否被宣布为retain财产?如果没有,那么 setter 将永远不会在可变数组上调用 retain。当 autorelease 在事件循环结束时减少可变数组的保留计数时,它可能会被释放,让您指向垃圾内存。

最新更新