2013-08-21 31 views
0

如何判斷類方法是否分配並處理對象?例如...Objective-C:如何判斷類方法是否分配inits

NSArray *theArray = [NSArray array]; 
NSArray *anotherArray = [[NSarray alloc] init]; 

使用這兩個有什麼區別?難道他們都沒有創建一個空陣列?

NSCalendar *theCalendar = [NSCalendar currentCalendar]; 
NSCalendar *anotherCalendar = [[NSCalendar alloc] init]; 

您如何知道在創建對象時使用哪個?

+3

歸結爲以下命名約定和閱讀文檔。 – Thilo

回答

0

如果啓用ARC,則沒有區別。

[NSArray數組]是一種方便的方法。它分配一個數組對象,初始化它並將對象標記爲autorelease(後者是禁用自動引用計數的時候)。許多對象提供了這些類型的方法來創建實例。請查閱API文檔,以瞭解您感興趣的類是否提供了alloc-init-(autorelease)快捷方式,或者它是否具有更適合您需求的創建或初始化方法。使用它們 - 它們更短,代碼更易於閱讀,無需擔心ARC是打開還是關閉。爲你自己的類寫類似的方法。

如果您需要在init函數中傳遞參數,請使用特定的alloc-init。例如。

NSMutableArray ary = [[NSMutableArray alloc] initWithCapacity:50]; 

或甚至更好

NSMutableArray ary = [NSMutableArray arrayWithCapacity:50]; 

同樣,當一個希望有通過實例引用計數控制的alloc-INIT對是有用ARC之前。

相關問題