我有一個奇怪的問題,顯示(空),當另一個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];
}