我正在開發一個ARC啓用項目。從視圖控制器我推MyClass的,ARC:對象 - 代表關係
- (void)pushMyClass {
MyClass *myClass = [[MyClass alloc] init];
[self.navigationController pushViewController:myClass animated:YES];
}
做一些操作,我大跌眼鏡MyClass的經過。這裏的問題是,MyClass沒有被取消分配。以下是課程的外觀。
/* MyHelperClassDelegate */
@protocol MyHelperClassDelegate <NSObject>
- (void)helperDidFinishHelping:(MyHelperClass *)helper;
@end
/* MyHelperClass接口*/
@interface MyHelperClass : NSObject {
__weak id <MyHelperDelegate> delegate;
}
@property(nonatomic, weak) id<MyHelperDelegate> delegate;
- (void)startHelping;
@end
/* MyHelperClass實施*/
@implementation MyHelperClass
@synthesize delegate;
- (void)dealloc {
delegate = nil;
}
/* MyClass的*/
@interface MyClass : UIViewController <MyHelperClassDelegate> {
MyHelperClass *helper;
}
@implementation MyClass {
- (void)dealloc {
helper.delegate = nil;
}
- (void)getHelp {
helper = [MyHelperClass new];
helper.delegate = self;
[helper startHelping];
}
- (void)helperDidFinishHelping:(MyHelperClass *)helper {
}
}
MyHelperClass要求使用NSMutalbleURLRequest & NSURLConnection的來獲取一些數據的Web服務,並將其保存到用戶的默認值。
有一點需要注意的是,如果我評論行helper.delegate = self;,那麼MyClass被取消分配。
如何讓MyClass在導航控制器彈出時被取消分配?
謝謝。
您已經包含了很多代碼,這些代碼似乎與您所詢問的這個MyClass實例無關,與此無關。這個MyHelperClass事情與任何事情有什麼關係?我認爲要麼你需要更清楚你的代碼實際在做什麼,或者你需要包含更多相關的代碼。 – Chuck 2013-04-11 17:25:39
如果你拿出'helper.delegate = self'這行,它是否會被釋放?如果行爲沒有改變,那麼問題就在於別的地方。 – 2013-04-11 17:31:23
您是否添加了斷點或nslog語句來釋放以驗證其被調用? – 2013-04-11 18:54:24