0

在我的應用程序中,我使用ARC,並且我是新的。 我有兩個簡單的問題。IOS:分配對象的ARC方法

第一個問題; 如果我的Alloc一個NSArray我做

NSArray *array = [[NSArray alloc]init]; 

,但我能做的也這樣?

NSArray *array = [NSArray array]; 

是一樣的嗎?

第二個問題:如果 我有這樣的:

UINavigationController *navigationcontroller = [[UINavigationController alloc] initWithRootViewController:myViewC]; 

什麼版本的ARC或者我可以這樣寫?

感謝

回答

0

在內部,[NSArray array]將撥打[[NSArray alloc] init],因此在使用ARC的環境中,沒有區別。

爲了完整起見,還有第三種方式:[NSArray new]相當於[[NSArray alloc] init]

至於第二個問題,-initWithRootViewController:是一種方便的方法。這相當於這樣做:

UINavigationController *navigationController = [[UINavigationController alloc] init]; 
navigationController.viewControllers = @[ rootViewController ]; 
+0

,如果我想釋放一個NSArray?我可以簡單地做array = nil;?或者ARC認爲要這樣做? – CrazyDev

+0

您可以顯式地將其設置爲零或等待ARC在對象超出範圍時釋放它。標準約定是讓ARC處理它。這也有利於你的代碼不被散佈在「obj = nil」中。 – neilco

0

你可以這樣寫這些,在ARC您不必手動添加保留,釋放。它由ARC完成。剩下的事情你可以做。

+0

但是對於alloc navigationcontroller是否只有這種方式?有沒有新的方法來實例化新的uinavigationcontroller? – CrazyDev

+0

現在,這是正確的方式。 –