自己是在iOS已經出現ARC機制的時候學習iOS程式設計,以為可以再也不用在乎記憶體管理,只要專注在應用程式功能上的開發即可,然而這一路以來的開發過程告訴我,記憶體管理依然非常重要,縱使我有無限制的記憶體,但在程式邏輯上會牽扯到記憶體運作,儘管我能順暢地寫完功能,執行後可能不是我想要的結果!
這裡我要來測試記憶體,陣列初始化、陣列加入元素、陣列移除元素,稍微觀察一下,就知道method如何實作。
/** Theme: Test Memory IDE: Xcode 5 Language: Objective C Date: 103/01/07 Author: HappyMan Blog: https://cg2010studio.wordpress.com/ */ - (void)viewDidLoad { [super viewDidLoad]; [self testMemory]; } -(void)testMemory { NSDictionary *dict1 = @{@"Name" : @"HappyMan", @"Number" : @(77)}; NSDictionary *dict2 = @{@"Name" : @"HappyWoman", @"Number" : @(17)}; NSDictionary *dict3 = @{@"Name" : @"WaterMan", @"Number" : @(66)}; NSMutableArray *arr1 = [NSMutableArray array]; NSMutableArray *arr2 = [NSMutableArray array]; [arr1 addObject:dict1]; [arr1 addObject:dict2]; [arr2 addObject:arr1]; arr1 = [NSMutableArray array]; // [arr1 removeAllObjects]; [arr1 addObject:dict3]; [arr2 addObject:arr1]; NSLog(@"arr2: %@", arr2); }
這是我想要的執行結果:
arr2: ( ( { Name = HappyMan; Number = 77; }, { Name = HappyWoman; Number = 17; } ), ( { Name = WaterMan; Number = 66; } ) )
若arr1 = [NSMutableArray array];改為[arr1 removeAllObjects];,這是非預期的執行結果:
arr2: ( ( { Name = WaterMan; Number = 66; } ), ( { Name = WaterMan; Number = 66; } ) )
參考:自己的經驗。
廣告
發表留言