2010-07-08 90 views
3

在Objective-C中,如果我有一個方法在其中分配和初始化一個對象,然後返回它,我在哪裏/如何釋放它?返回一個Objective-C對象時的內存管理

例如,假設我有一個方法,我創建一個對象:

- (void)aMethod { 
    UIView *aView = [self createObject]; 
} 

- (UIView *)createObject { 
    UIView *returnView = [[UIView alloc] initWithFrame:CGRectZero]; 
    return returnView; 
} 

我什麼時候發佈這個目標?或者我會自動釋放它?

+0

的可能重複的[存儲器管理目標c - 從中​​方法返回對象(http://stackoverflow.com/questions/2742397/memory-management-objective-c-returning-objects-from-methods) – kiamlaluno 2010-08-05 18:12:41

回答

2
- (void)aMethod { 
    UIView *aView = [self createObject]; 
} 

- (UIView *)createObject { 
    UIView *returnView = [[UIView alloc] initWithFrame:CGRectZero]; 
    [returnView autorelease]; 
    return returnView; 
} 
8

rules for memory management在這個問題上很清楚。你應該閱讀它們。使用Apple框架編寫Objective-C代碼非常簡單,也是最基本的。

-6

還請記住,垃圾收集不存在於iPhone上,因此如果您正在爲該環境開發,則無法自動釋放。

至於何時應該釋放對象,最簡單的答案就是當你完成使用它並且在你銷燬應用程序之前。

+0

因此,就我上面的示例而言,在我使用'aMethod'方法完成對象後,我會釋放該對象嗎? – Calvin 2010-07-08 03:05:47

+1

@jer我幾乎可以肯定垃圾收集不在任何iOS – cobbal 2010-07-08 03:15:17

+0

@cobbal,http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/CoreDataUtilityTutorial/Articles/02_creatingProj.html – jer 2010-07-08 03:21:51