0

我的单例和 UIViewController 有一些问题;

单例.h

@property (nonatomic, retain) UIViewController *viewController;

单身人士.m

...

@synthesize viewController = _viewController;

- (void)load {
   self.viewController = [[[UIViewController alloc] initWithNibName:@"NibName" bundle: nil] autorelease];
}

- (void)unload {
   [_viewController release];
}

viewController由应用程序的不同部分通过pushViewController:animated:. 但有时我需要viewController通过调用- (void)unloadSingleton 类的方法来释放!如果pushViewController:animated:从不要求viewController一切正常并且 dealloc 正在调用,但如果 pushViewController(和 viewController 执行 viewDidLoad),则 dealloc 不起作用。如果我做类似self.viewController = nil;dealloc 调用两次...我做错了什么???

4

2 回答 2

1

您的卸载功能应仅包括:

- (void)unload {
   self.viewController = nil;
}

当您将保留属性设置为 nil 时,它会释放实例变量并将其归零。您只是在此处的财产上留下一个悬空指针。

于 2012-08-02T00:57:48.017 回答
0

您需要nil在发布后将其设置为:

[_viewController release];
_viewController = nil;

否则下一个出现的人将尝试使用无效指针来做事。

于 2012-08-02T00:55:38.823 回答