自己是在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;
}
)
)
參考:自己的經驗。
隨意留個言吧:)~