iOS dynamic object creation

Posted by Abdul Ahmad on Stack Overflow See other posts from Stack Overflow or by Abdul Ahmad
Published on 2014-05-30T14:51:45Z Indexed on 2014/05/30 15:26 UTC
Read the original article Hit count: 153

Filed under:
|
|

I've worked with Xcode and iOS on a few personal projects and have always used non-object-oriented designs for everything... just because I've been doing mostly learning/experimenting with things.

Now I've been trying to implement some object oriented design into one game I've made previously. The idea is, I have a space ship that can shoot bullets. In the past I basically added the UIImageView to the storyboard and then connected it to the .h file and from there did things on it like move it around or whatever (using CGPointMake).

The idea now is to make a method (and a whole other class soon) that will create a UIImageView programmatically, allocate it, add it to the superview etc... I've got this working so far, easy stuff, but the next part is a bit harder. Where do I store this local variable "bullet"? I've been saving it to an NSMutableArray and doing the following: (actually here are the methods that I have)

-(void)movement {
    for (int i = 0; i < [array1 count]; i ++) {
        UIImageView *a = [array1 objectAtIndex:i];
        a.center = CGPointMake(a.center.x + 2, a.center.y);
        if (a.center.x > 500) {
            [array1 removeObjectAtIndex:i];
            [a removeFromSuperview];
        }
    }
}

-(void)getBullet {
    UIImageView *bullet = [[UIImageView alloc] initWithFrame:CGRectMake(ship.center.x + 20, ship.center.y - 2, 15, 3)];
    bullet.image = [UIImage imageNamed:@"bullet2.png"];
    bullet.hidden = NO;
    [self.view addSubview:bullet];
    [array1 addObject:bullet];
}

(by the way, array1 is declared in the .h file) and theres a timer that controls the movement method

timer = [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(movement) userInfo:nil repeats:YES];

first question is: what is the correct way of doing this? Storing a bullet for example until it is removed from the superview, should I store it another way?

and another question is, when I remove a UIImageView from the superview, does that remove it from memory so its not using up system resources?

Thank you for the help! (will update if I Think of other questions

© Stack Overflow or respective owner

Related posts about ios

Related posts about objective-c