繁体   English   中英

iPhone-有关对象的一般性问题

[英]iphone - generic question about objects

我有几个UIImagesView,并将它们放在MutableArray上。 MutableArray被保留。 我也将它们添加为视图的子视图。

在视图上添加每个UIImageViews之后,我释放它们...例如...

[myView addSubview:myImageView];
[myImageView release];

如果我没看错的话,每个imageView现在的keepCount为2,因为它们也存储在MutableArray中。

现在,我释放视图,因此,每个imageView的keepCount都降至1。

在某些时候,我会做:

myMutableArray = nil;

这样可以吗? 由于imageViews的retainCount仍为1,所以我不确定是否将数组设置为nil,存储imageViews的数组是否会释放图像...我想是这样,但是我想听听各位大师的意见!

会泄漏吗?

谢谢

您应该忽略保留计数,因为系统会在后台添加和删除保留计数,并且您不可能对其进行跟踪。

相反,您需要专注于匹配您自己创建的保留和释放对。

在这种情况下,您唯一需要注意的是可以保留初始化图像视图的位置。

通常看起来像这样:

UIImageView *imgView=[[UIImageView alloc] initWithImage....
[myMutableArray addObject:imgView];
[myView addSubview:imgView];
[imgView release];

这样就完成了。 数组和视图将管理它们自己的保留,并且您将初始化的保留与发行版进行了匹配,并且一切正常。

是的,那会泄漏! 您将myMutableArray设置为nil而不释放该数组。 这样做会从NSMutableArray对象及其包含的所有UIImageView对象泄漏内存。 如果要处理数组及其内容,则释放数组就像释放其他对象一样:

[myMutableArray release];
myMutableArray = nil;

然后,阵列将向其包含的每个对象发送释放消息。

暂无
暂无

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

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