我在iPhone开发书中看到一些奇怪的编码示例,涉及到向数组添加对象和释放整个数组时数组的行为。一个代码示例有以下属性:
@property (nonatomic, retain) NSMutableArray* myArray;
作者将一个对象添加到数组中,并在此之后立即释放了指向该对象的指针。那么数组单元格现在不会指向垃圾数据吗?除非,在幕后,当添加对象时,数组单元格保留该对象。
SomeObject* someObject = [[SomeObject alloc] init];
[self.myArray addObject:someObject];
[someObject release];
作者在释放数组指针时,并没有先遍历每个数组单元并释放各自的对象。除非在幕后,每个单元都被发送了一个release消息,否则这会导致内存泄漏。
- (void)viewDidUnload {
self.myArray = nil;
[super viewDidUnload];
}
retain
属性,还是所有NSMutableArray都表现出这种行为?这方面的文档在哪里? - JoJo