带有子视图动画的UIAlertView到新视图崩溃的应用程序

时间:2010-05-31 01:49:47

标签: objective-c iphone uialertview

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Congratulations" message:message delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"View", nil];
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(110, 100, 80, 80)];
NSString *imagePath = [NSString stringWithFormat:@"%@", [Array objectAtIndex:x]];
UIImage *bkgImg = [UIImage imageWithContentsOfFile: [[NSBundle mainBundle] pathForResource:imagePath ofType:@"png"]];
imageView.image = bkgImg;
[bkgImg release];
[alert addSubview:imageView];
[imageView release];
[alert show];
[alert release];    

这是我用来创建警报视图的代码。目前,我设置了它,所以如果用户按下其中一个按钮,它将加载一个新的viewcontroller。它工作正常,直到我将一个子视图添加到UIAlertView。现在,只要它动画到新屏幕,它就会崩溃程序。我对iPhone开发还很陌生,任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:1)

你在做:

UIImage *bkgImg = [UIImage imageWithContentsOfFile: [[NSBundle mainBundle] pathForResource:imagePath ofType:@"png"]];
...
[bkgImg release];

+imageWithContentsOfFile会返回一个自动释放的UIImage实例,因此您应该自行释放它。可能发生的事情是NSAutoreleasePool向已经解除分配的对象发送-release,导致应用程序稍后崩溃。

我建议您仔细查看http://developer.apple.com/mac/library/documentation/cocoa/Conceptual/MemoryMgmt/MemoryMgmt.html(或等效的iPhone文档,如果存在的话)。