2012-12-30 102 views
0

我做了一個類,充當其他幾個類的委託。雖然有一個問題。 ARC過早發佈此類,並且發送委託消息時,程序崩潰。我不明白爲什麼......我把課程設置得很強。如何確保這個班級不被釋放?自動引用計數 - 發送到釋放實例的消息

ViewController.h

Class *__strong class; 

ViewController.m

class = [[Class alloc] init...]; 

Class.m

-(id)init { 

    self = [super init]; 

    Object *object = [[Object alloc] init...]; 
    object.delegate = self; 

    return self; 

} 

01當函數退出,不管你可以決定多少內存預選賽附加到他們

登錄

-[Object respondsToSelector:]: message sent to deallocated instance 0x11453f40 
+0

「對象」的'object'實例在ARC下的'return self'之前釋放,因爲它應該是。 – FluffulousChimp

回答

1

本地變量被釋放。

1

你已經得到了你的答案,但我想我會用我自己的一點小竅門。我總是從dealloc的通知中心刪除我的課程。

-(void) dealloc{ 
    [[NSNotificationCenter defaultCenter] removeObserver:self]; 
} 

這可能是矯枉過正了一些,但我倚在通知模式相當嚴重,以實現爲失去聯軸器越好。由於通知與ARC結合的異步性質,這幾乎是必需的。

相關問題