我有一个奇怪的问题,显示(空),当另一个ViewController来来去去。我将它追溯到它读取要显示给tableview的数据的地方,并发现它读取的数据为空。为了调试这个,我需要了解内存管理如何真正适用于iPhone。我在我的应用程序委托中使用了下面的代码来创建一个对象数组。这是来自我为我的应用修改的示例代码。我的问题是,当一个像这样创建一个数组时,[tempArray release]是否会释放刚创建的数组?分配和释放内存在iPhone Xcode 3.2.5,iOS 4.2.1
//Initialize the hardware array.
NSMutableArray *tempArray = [[NSMutableArray alloc] init];
self.hardwareArray = tempArray;
[tempArray release];
这种类型的代码似乎是非常常见的iPhone。例如,教程一直在说,现在您已将数据传递给控制器,您可以释放它。但是我的C和C++经验告诉我,如果你释放内存,它就会消失,如果它的地址坐在堆栈的某个位置,它就没有用。数据是否被复制到另一个地方而不是地址被传递?
此外,当释放一个像下面这样的设置例程中的内存时,我应该在释放它之前检查modleName是否不为零。如果发布的modelName已经是零,会发生什么情况?
-(void) setModelName:(NSString *)newValue {
self.isDirty = YES;
[modelName release];
modelName = [newValue copy];
}