我正在制作iPhone游戏,目前游戏使用许多UIImageViews
来展示太空飞船,子弹和其他东西。游戏可能在视图控制器中有30-40个不同的子视图,我决定在需要时我可能以编程方式添加子视图,而不是在隐藏状态下使用它们开始游戏并在需要时将它们取消隐藏(对于性能问题)所以这是我的问题:
(1)在需要时添加子视图会有显着的性能提升吗?
(2)如何在启用ARC时发布子视图?我试图将视图(基于类型)添加到NSMutableArray
中,当它被创建以保存它时,并在我完成使用它时将其从数组中删除,确实将它从数组中删除,释放该内存?
继承代码(每隔0.03秒运行一次运动方法的NSTimer
,并且get和set方法位于"实例变量" NSMutableArray
);
-(void)movement {
if (shootButton3.isHighlighted) {
NSMutableArray *array = [self getBulletArray];
[self setarray:array];
}
[self shootBullet: [self getArray]];
}
-(NSMutableArray *)getBulletArray {
UIImageView *bullet = [[UIImageView alloc] initWithFrame:CGRectMake(ship.center.x + 20, ship.center.y, 15, 3)];
bullet.image = [UIImage imageNamed:@"bullet2.png"];
bullet.hidden = NO;
[self.view addSubview:bullet];
NSMutableArray *array = [[NSMutableArray alloc] init];
[array addObject:bullet];
return array;
}
-(void)shootBullet: (NSMutableArray *)bulletArray {
for (int i = 0; i < [bulletArray count]; i++) {
UIImageView *bullet = [bulletArray firstObject];
bullet.center = CGPointMake(bullet.center.x + 4, bullet.center.y);
if (bullet.center.x > 500) {
bullet.hidden = YES;
[bulletArray removeObjectAtIndex:0];
}
}
}
-(void)setarray:(NSMutableArray *) array {
bulletArray = array;
}
-(NSMutableArray *)getArray {
return bulletArray;
}
答案 0 :(得分:1)
回答你的两个问题:
问题1:是的,无论UIImageViews有多大,肯定会有性能提升。
问题2:只需将imageView设置为nil:self.imageView = nil;