views:

122

answers:

3

I'm trying to add the value playerhight, among other values to NSMutableArray, but it won't let me build and I can't figure out why.

#import "iGameViewController.h"

@implementation iGameViewController

@synthesize player;

    int playerheight;

NSMutableArray *location = [NSMutableArray arrayWithCapacity:3];

-(IBAction)up;{
    player.center = CGPointMake(player.center.x, player.center.y - 5);
    location = [NSMutableArray new];
[location addObject:player.center.x];
[location addObject:player.center.y];
[location addObject:playerheight];

}
+2  A: 

You can only add objects to arrays in Objective-C. player.center is a struct, and player.center.x is a CGFloat, neither of which are objects. If you want to add the point as a single object, you can box it in an NSValue object. If you want to add the floats directly, they have to be boxed in NSNumber objects.

Dave DeLong
A: 

What do you need this line for?

 location = [NSMutableArray new];

The rest is already explained by Dave.

Vnuce
+1  A: 

playerheight and location should be instance variables, declared in your .h file and then set it in the init method. You can't initialize a global Objective-C object in this way. If you really want it to be global, you can initialize it as nil, and then each time to need it, check to make sure it's been created and it not create it.

Cory Kilger