在以下一段代碼中(來自一本書)數據是一個NSDictionary * data;在頭文件中定義(無屬性)。應該變量被釋放還是不變? iphone-sdk
在viewDidLoad中控制器會出現以下情況的:
- (void)viewDidLoad {
[super viewDidLoad];
NSArray *keys = [NSArray arrayWithObjects:@"home", @"work", nil];
NSArray *homeDVDs = [NSArray arrayWithObjects:@"Thomas the Builder", nil];
NSArray *workDVDs = [NSArray arrayWithObjects:@"Intro to Blender", nil];
NSArray *values = [NSArray arrayWithObjects:homeDVDs, workDVDs, nil];
data = [[NSDictionary alloc] initWithObjects:values forKeys:keys];
}
因爲我是真正的新的Objective-C,爲什麼我沒有保留變量鍵可有人向我解釋,homeDVDs ,workDVDs和值之前退出該功能?我希望之前的數據分配如下:
[keys retain];
[homeDVDs retain];
[workDVDs retain];
[values retain];
或不? InitWithObjects將所有對象複製(遞歸)到一個新表中?
假設我們沒有最後一行(數據分配),我們應該釋放所有NSArrays退出函數之前(或者我們可以安全地假定所有NSArrays將被自動釋放,因爲對於每一個沒有ALLOC?)
謝謝!