在一个简单的UIImageViews数组上的EXC_BAD_ACCESS

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.它将保留在界面中.问题是什么?

Eva*_*ski 5

不要释放array.使用时arrayWithObjects:,它将返回一个自动释放的对象.从某种意义上说,你发布它两次.另一种选择是:

[[NSArray alloc]initWithObjects:...]
Run Code Online (Sandbox Code Playgroud)

然后你就可以发布了array.

请参阅Apple的内存管理文章:

http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmObjectOwnership.html%23//apple_ref/doc/uid/20000043-BEHDEDDB