-(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)不要在init
和dealloc
方法中使用self.dmrPlaylists
。 相反,请与基础变量交互。
2) 呼叫[super dealloc]
不知道警告在哪一行,无法确定,但这些都是问题。
您还没有告诉我们上述代码的哪一部分导致错误。使用调试器逐步执行它,以隔离它发生的位置并返回我们。
此外,您没有向我们提供足够的代码来了解出了什么问题。例如:
self.dmrPlaylists = [[[NSMutableArray alloc] initWithCapacity:0] autorelease];
可能最终使用自动发布的可变数组调用-setDmrPlaylists:
。-setDmrPlaylists:
在哪里定义?它是由@property
声明和@synthesize
编辑声明的吗?如果是这样,它是否被宣布为retain
财产?如果没有,那么 setter 将永远不会在可变数组上调用 retain
。当 autorelease
在事件循环结束时减少可变数组的保留计数时,它可能会被释放,让您指向垃圾内存。