EDIT
What i am trying to achieve with the code, is to create an array of 20 unique ‘Person’ objects. I know now thanks to the guys below that i am going way off calling dealloc.
for (int i = 0; i < 20; i++)
{
Person *myPerson = [[Person alloc] init];
myPerson.name = @"Brian";
myPerson.age = [NSNumber numberWithInteger:23];
[myArray addObject:myPerson];
[myPerson dealloc];
}
In the process of learning Objective C, hence why this code might seem crazy to you. But I am coming from Java so my logic isn’t great for Objective C yet.
I was trying to populate my array with 20 person objects. But it seems i am adding the same Object person all the time. Then deallocating it which defeats the point.
So my question is: What would be the correct way to to fill the array with 20 different person objects. The names and ages will be different in the future for each person but at the moment they all be the same while i learn.
Is the only way to do this to type a lot of code like this :
Person *myPerson1 = [[Person alloc] init];
myPerson.name = @"Brian";
myPerson.age = [NSNumber numberWithInteger:23];
[myArray addObject:myPerson1];
Person *myPerson2 = [[Person alloc] init];
myPerson.name = @"Brian";
myPerson.age = [NSNumber numberWithInteger:23];
[myArray addObject:myPerson2];
Person *myPerson3 = [[Person alloc] init];
myPerson.name = @"Brian";
myPerson.age = [NSNumber numberWithInteger:23];
[myArray addObject:myPerson3];
20 times? Or is there a more elegant solution?
Thanks for you advice.
-Code
Your for loop code is correct with the exception of deallocating myPerson at the end of the loop. You do not want to deallocate it since the object is retained by the array. Generally you do not want to invoke dealloc directly, you want to use retain/release instead. For more information about memory management check out Apple’s Guide
So you are correct with the exception of dealloc being changed to release.