我有几个UIImagesView,我将它们放在MutableArray上。 MutableArray保留。 我也将它们添加为视图的子视图。
在视图上添加每个UIImageViews后,我将它们释放出来......例如......
[myView addSubview:myImageView];
[myImageView release];
如果我没错,每个imageView现在都有一个retainCount为2,因为它们也存储在MutableArray中。
现在我发布了视图,因此,每个imageView的retainCount都会降为1。
在某些时候我做了:
myMutableArray = nil;
这样做可以吗?由于imageViews还有一个retainCount为1,我不确定是否将数组放到nil,存储imageViews的数组会释放图像......我想是这样,但我想听听你的主人的意见! / p> 这会泄漏吗?
感谢
答案 0 :(得分:2)
您应该忽略保留计数,因为系统会在后台添加和删除保留计数,您无法跟踪它。
相反,您需要专注于匹配您自己创建的保留和释放对。
在这种情况下,您唯一需要注意的是可能首先保留初始化图像视图。
通常它看起来像这样:
UIImageView *imgView=[[UIImageView alloc] initWithImage....
[myMutableArray addObject:imgView];
[myView addSubview:imgView];
[imgView release];
你已经完成了。数组和视图将管理自己的保留,并且您将初始化的保留与发布相匹配,并且所有这些都与世界相符。
答案 1 :(得分:0)
是的,会泄漏!您将myMutableArray设置为nil而不释放数组。这样做会从NSMutableArray对象及其包含的所有UIImageView对象泄漏内存。如果要处理数组及其内容,则释放数组就像释放任何其他对象一样:
[myMutableArray release];
myMutableArray = nil;
然后,数组将向其包含的每个对象发送一条释放消息。