我正在开发一个启用 ARC 的项目。从视图控制器我推MyClass,
- (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;
}
/* 我的课 */
@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 被释放?
谢谢。