2013-06-26 24 views
1

沒有ARC,我可以使用自動釋放的陣列如下圖所示如何從ARC中的函數返回對象?

//-(NSMutableArray *)getObjects 

-(NSMutableArray *)retrieveObjects 
{ 
    NSMutableArray *aArray = [[NSMutableArray alloc] init]; 
    // add objects 
    return [aArray autorelease]; 
} 

如何實現ARC一樣嗎?

+2

請注意,根據Cocoa的命名約定,當它們通過輸出參數返回值時,應該只使用以'get'開頭的方法名稱。請參閱https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CodingGuidelines/Articles/NamingMethods.html – 2013-06-26 08:29:37

回答

2

根據蘋果的Advance Memory Management Programming Guide

在自動引用計數,或ARC,該系統使用相同的引用計數系統MRR,但它插入適當的內存管理方法會在編譯時調用。強烈建議您將ARC用於新項目。如果使用ARC,通常不需要理解本文檔中描述的底層實現,儘管它在某些情況下可能會有所幫助。

通常,您不需要使用retain,release或autorelease方法。系統會爲你做。但是,您需要小心不要執行保留循環;如果你這樣做,那些對象將永遠不會被釋放。

8

您不要autorelease該對象。

2

您不必自動釋放該對象。 ARC會照顧它。但是,如果沒有任何內容強烈引用getObjects方法中的返回對象,它將立即發佈。

array = [self getObjects] // array should be a strong variable 
1

就像是:

-(NSMutableArray *)getObjects 
{ 
    NSMutableArray *aArray = [NSMutableArray alloc] init]; 
    // add objects 
    return aArray; 
}