[英]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.