sol*_*sol 1 memory arrays iphone uiimageview
这段代码有什么问题?
在界面中:
NSArray *myImages;
@property (nonatomic, retain) NSArray *myImages;
Run Code Online (Sandbox Code Playgroud)
执行:
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];
Run Code Online (Sandbox Code Playgroud)
如果我在初始化后立即记录myImages,它会正确记录UIImageViews数组.但是,稍后在应用程序中,当我尝试从不同的方法访问self.myImages时,我得到EXC_BAD_ACCESS.它将保留在界面中.问题是什么?
不要释放array.使用时arrayWithObjects:,它将返回一个自动释放的对象.从某种意义上说,你发布它两次.另一种选择是:
[[NSArray alloc]initWithObjects:...]
Run Code Online (Sandbox Code Playgroud)
然后你就可以发布了array.
请参阅Apple的内存管理文章: