Just a Computer Graphics Studio & My Life

[iOS] 測試記憶體

自己是在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;
        }
    )
)

參考:自己的經驗。

廣告

發表留言

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s

標籤雲

%d 位部落客按了讚: