Если вы являетесь владельцем объекта, вам придется освободить его.
NSMutableArray *list = [[NSArray alloc] init];
NSString *str = [[NSString alloc] init] // you are the owner of this object
[list addObject:str];
[str release]; // release the object after using it
[list release];
Если вы не являетесь владельцем объекта, вы не должны освобождать.
NSMutableArray *list = [[NSArray alloc] init];
NSString *str = [NSString string]; // you are not owning this object
[list addObject:str]; // str retain count is incremented
[list release]; // str retain count is decremented.
Это концепция, которую использует даже массив.Когда вы добавляете какой-либо объект в массив, массив сохранит его.В том смысле, что он становится владельцем этого объекта и освобождает этот объект при освобождении массива.