I have this little code
NSMutableArray *myArray = [[NSMutableArray alloc] init]; NSNumber *myNumber = [NSNumber numberWithDouble:752.65]; [myArray addObject:myNumber];
With this code I store Objects inside an array. But now I have two objects independent from each other.
If I change myNumber after it’s been added to the array the value inside the array does not change. How can I archive that? I tried to give a pointer only to the array but it did not work.
You cannot put a variable into an array, and that’s what
myNumberis: a variable. A variable is a container, and so is an array; the difference is that a variable is not also an object*, like the array is, and you can only put objects into an array.What you pass to
addObject:is not the variablemyNumber, but the object it contains. That’s what you are adding to the array.To add the variable instead of the object inside it, you would need to do
addObject:&myNumber, in order to pass a pointer to the variable itself. But this won’t work, for two reasons:There are three solutions that will work:
That last solution is, in my opinion, the correct one. I doubt you are managing only a list of numbers; more likely, you are showing the user a list of something that has the number as a property. Model this in your code, and everything becomes much simpler.
Your code after replacing the bare NSNumbers with model objects will be something like:
*I mean Cocoa objects. The C language does call any pointer, int, etc. an “object”, but this is a different definition.