1
我正在做一個幫手類。這個輔助類包含一個我將與之交互的NSObject類和一個執行一些其他工作的UIViewController。代表似乎被設置爲零自動
這裏是發生什麼事,在我的應用程序委託或其它地方我分配我的NSObject類:
MyObjectClass *class = [[MyObjectClass alloc] init];
[class setDelegate:self];
現在,這個委託是我這樣創建:
@protocol MyDelegate
-(void) someCall;
@end
@interface MyHelperClass : NSObject {
id <MyDelegate> delegate;
}
@property (retain, nonatomic) id <MyDelegate> delegate;
所以這個偉大工程。但這是問題。如果我分配我的助手類,並將其委託給視圖控制器或其他東西,然後調用我的幫助者視圖控制器的方法之一,委託停止工作。調試後,似乎它有一些內存地址,直到我彈出其他視圖控制器,當我回到它時,委託的內存地址是0x0。
我的問題是怎麼會發生這種情況?我需要爲我的代理做些特別的事情來阻止它釋放嗎? (我不會在任何地方釋放它)我需要保留它嗎? 即使打開我的視圖控制器,我該如何保持它的分配狀態,以便繼續使用它?
在此先感謝!
你如何做到這一點......「如果我分配我的幫助類並將其委託給視圖控制器或其他東西,然後調用我的方法之一打開我的幫助視圖控制器委託停止工作」。 ...請發佈您的代碼.....我認爲這是參考loss.code的問題將有所幫助。 – Ravin 2011-04-28 02:53:36
Ravin,我已經展示瞭如何在上面分配我的NSObject類的代碼。我從我的委託調用方法如下:[delegate someCall]; – John 2011-04-28 02:55:08
MyObjectClass * class = [[MyObjectClass alloc] init]; [class setDelegate:self]; 你在自己寫someCall方法嗎?您是否嘗試過使用MyObjectClass之外的其他名稱? – Ravin 2011-04-28 03:04:33