我担心我是否正确添加对象并释放它们。
- NSMutableArray 实际包含什么 - 对象的副本还是指向它们的指针?
- 使用 NSMutableArray 的顺序是什么? (分配、初始化、工作、释放)
如何正确的保留和释放?
NSMutableArray *listData = [[NSMutableArray alloc] init]; int i = 0; for (i = 0; i < 3; i++) { MyData *obj = [[MyData alloc] init]; NSString *name = nil; switch (i) { case 0: name = @"Semen"; break; case 1: name = @"Ivan"; break; case 2: name = @"Stepan"; break; default: break; } obj.name = name; [listData addObject: obj]; [obj release]; } [listData release] //in dealloc method
或者我需要先释放所有包含的对象,然后才释放 NSMutableArray 对象?
谢谢!
最佳答案
NSMutable 数组包含对对象的引用。当你向 NSMutableArray 添加一个对象时,它会保留该对象。也就是说,将对象添加到数组后,您应该释放它。当您完成数组中的该对象后,您可以从数组中删除该对象。删除后,对象会自动收到释放消息。所以你不需要向它发送另一条发布消息。如果你释放数组本身,不需要向所有对象发送释放消息,因为在 NSMutableArray 的释放期间它会向它包含的所有对象发送释放消息。
1. alloc NSMutableArray. 2. alloc object1. 3. add object1 to array. 4. release object1. 5. alloc object2. 6. add object2 to array. 7. release object2. 8. add as many objects as needed in this manner. 8. work with object1. 9. remove object1 from array. it will receive a release automatically. 10. release the array. object2 and others will receive a release.
希望对您有所帮助。
关于iphone - NSMutableArray 如何正确添加和释放对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4034443/