Iphone 在UIImageView的简单数组上执行错误访问
这个代码有什么问题 在界面中:Iphone 在UIImageView的简单数组上执行错误访问,iphone,arrays,memory,uiimageview,Iphone,Arrays,Memory,Uiimageview,这个代码有什么问题 在界面中: NSArray *myImages; @property (nonatomic, retain) NSArray *myImages; 实施: NSArray *array = [NSArray arrayWithObjects: [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image1.png"]], [[UIImageView
NSArray *myImages;
@property (nonatomic, retain) NSArray *myImages;
实施:
NSArray *array = [NSArray arrayWithObjects:
[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image1.png"]],
[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image2.png"]],
[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image3.png"]],
nil];
self.myImages = array;
[array release];
如果我在初始化myImages之后立即记录它,它将正确记录UIImageView数组。然而,在应用程序的后面,当我尝试从其他方法访问self.myImages时,我获得了EXC_BAD_访问权限。它将保留在界面中。有什么问题吗?如果arrayWithObjects返回一个自动释放的对象,您就过度释放了它。请参见此处arrayWithObjects返回自动释放的对象,您过度释放了它。请参见此处,请勿释放阵列。使用arrayWithObjects:,它将返回一个自动删除的对象。从某种意义上说,你是在释放它两次。另一种选择是:
[[NSArray alloc]initWithObjects:...]
然后可以释放数组
请参阅苹果的内存管理文章:
不要释放数组。使用arrayWithObjects:,它将返回一个自动删除的对象。从某种意义上说,你是在释放它两次。另一种选择是:
[[NSArray alloc]initWithObjects:...]
然后可以释放数组
请参阅苹果的内存管理文章:
arrayWithObjects是一种方便的方法,它返回一个自动释放的对象,因此请删除
[array release];
此外,您还可以通过以下操作泄漏内存:
[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image1.png"]]
因为这次不会释放imageView。arrayWithObjects是一种方便的方法,它返回一个自动释放的对象,所以请删除
[array release];
此外,您还可以通过以下操作泄漏内存:
[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image1.png"]]
因为这次没有发布imageView