如果我寫:使用類方法而不是init實例有什麼好處,反之亦然?
NSArray *arr=[[NSArray alloc]initWithObjects:@"Liza", @"Lipi", @"Rose"];
NSArray *arr=[NSArray arrayWithObjects:@"Liza", @"Lipi", @"Rose"];
兩個語句將做同樣的事情。那麼這兩個陳述之間有什麼區別,以及使用其中一個的好處是什麼?
如果我寫:使用類方法而不是init實例有什麼好處,反之亦然?
NSArray *arr=[[NSArray alloc]initWithObjects:@"Liza", @"Lipi", @"Rose"];
NSArray *arr=[NSArray arrayWithObjects:@"Liza", @"Lipi", @"Rose"];
兩個語句將做同樣的事情。那麼這兩個陳述之間有什麼區別,以及使用其中一個的好處是什麼?
在過去的日子裏...如果你使用第一個,你需要release
arr
。
第二次發佈autorelease
d對象。
現在在ARC中,編譯器將自動釋放。
好處:arrayWithObjects:
簡潔,不需要額外的方法調用。
在第一個語句中,您是生成的實例的所有者(因此如果不使用ARC
,則負責釋放它),而在另一個語句中則不是(該數組是自動爲您發佈的)。 (場景的alloc
和init
後面由NSArray
實現調用)
嗯,它更簡潔,但它會調用額外的方法調用,因爲它只是組合的一種便利函數'alloc'和'initWithObjects:'。 – gaige
然後在ARC中都有相同的含義,對吧? @Anoop Vaidya – liza
@liza:最終都會結束。但一個是類方法,另一個是實例方法。有時你不需要一個數組的實例,只是在字典中使用它。然後你用類方法去。我想你正在接受我。 –