Iphone 更改UIImageView的动画图像
在我的iPhone应用程序的viewDidLoad方法中,我有以下代码:Iphone 更改UIImageView的动画图像,iphone,objective-c,ios,cocoa-touch,sdk,Iphone,Objective C,Ios,Cocoa Touch,Sdk,在我的iPhone应用程序的viewDidLoad方法中,我有以下代码: zombie[i].animationImages = zombieImages; zombie[i].animationDuration = 0.8/zombieSpeed[i]; zombie[i].animationRepeatCount = -1; [zombie[i] startAnimating]; 稍后在应用程序中调用以下代码: [zombie[i] sto
zombie[i].animationImages = zombieImages;
zombie[i].animationDuration = 0.8/zombieSpeed[i];
zombie[i].animationRepeatCount = -1;
[zombie[i] startAnimating];
稍后在应用程序中调用以下代码:
[zombie[i] stopAnimating];
zombie[i] = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"zh.png"]];
zombie[i].animationImages = flyingZombieImages;
zombie[i].animationDuration = 0.8/zombieSpeed[i];
zombie[i].animationRepeatCount = -1;
[zombie[i] startAnimating];
这会导致应用程序崩溃,并在
zombie[i]行显示EXC_BAD_访问权限代码>
flyingZombieImages
使用以下代码初始化:(zombieImages
以相同的方式初始化)
NSMutableArray*flyingZombieImages=[NSMutableArray];
对于(i=1;i,如Dima所述,flyingZombieImages可能未正确初始化,这导致崩溃。但是,在创建UIImageView的新实例时,还有另一个问题:
zombie[i] = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"zh.png"]];
此时,您已经有一个对此变量中存储的旧UIImageView的引用。您正在丢失对它的引用,很可能会泄漏其内存。您还需要从视图层次结构中删除旧UIImageView并添加新的UIImageView
更好的方法是使用原始UIImageView并通过将此行替换为以下内容来更改其图像:
zombie[i].image = [UIImage imageNamed:@"zh.png"];
正如Dima提到的,flyingZombieImages可能没有正确初始化,这导致了崩溃。但是,在创建UIImageView的新实例时,还有另一个问题:
zombie[i] = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"zh.png"]];
此时,您已经有一个对此变量中存储的旧UIImageView的引用。您正在丢失对它的引用,很可能会泄漏其内存。您还需要从视图层次结构中删除旧UIImageView并添加新的UIImageView
更好的方法是使用原始UIImageView并通过将此行替换为以下内容来更改其图像:
zombie[i].image = [UIImage imageNamed:@"zh.png"];
僵尸[i].animationImages=flyingZombieImages;flyingZombieImages是如何初始化的/在哪里初始化的?似乎这就是问题的原因。你是否调试过数组,看看数组在那一点上是否有效?@dima这不重要,因为他分配的是比我说的僵尸[i]高一行
,我说的是flyingZombieImages
。他没有发布初始化代码。zombie[I].animationImages=flyingZombieImages;flyingZombieImages是如何初始化的/在哪里初始化的?似乎这就是问题的原因。你是否调试过数组,看看数组在那一点上是否有效?@dima这不重要,因为他在上面分配了一行。我不是说zombie[i]
,我说的是飞行僵尸图像
。他没有发布初始化代码。