1

viewDidUnload我确实设置IBOutlets为零的地方,我也将NSString对象设置为零。这些是(nonatomic,strong)NSString将对象设置为零是否有意义?

4

4 回答 4

3

请注意,您没有将任何对象设置为nil. 您所做的设置nil指向您的对象之一的指针,因此它不再指向任何东西。

这意味着,如果您在其他对象中有其他实例变量指向您的字符串,它们将不会看到对象中的任何差异——它们仍将指向相同的旧字符串,具有相同的、未更改的内容。

但是,要回答您的问题:取出变量确实有意义nil,但是如果以及当您的视图控制器被释放时,实例变量也将被释放。因此,如果您的琴弦很小,则可能没有迫切需要将nil它们放入viewDidUnload.

于 2012-09-05T20:06:10.423 回答
1

viewDidUnload,虽然它仍然存在,但应该用于删除您可以在loadView或中重新创建的任何内容viewDidLoad

如果字符串属性是视图控制器模型的一部分,并且无法重新创建,则不要删除它们。

该方法不能保证被调用——它只会在视图控制器离开屏幕时被调用,但系统已经受到内存压力。它不像viewWillAppearviewDidDisappear。它不应该与您的视图控制器的dealloc方法相混淆。

于 2012-09-05T20:04:44.850 回答
0

如果您手动管理内存,则不必将插座本身设置为零,只需将与其链接的对象设置为。

例如,如果您有@property (nonatomic,strong)IBOutlet UIImageView *imageView;

您只需要将图像视图设置为 nil -imageView = nil;

于 2012-09-05T20:01:17.657 回答
0

-viewDidUnload仅用于释放在-viewDidLoad或中创建的对象-loadView,包括 IBOutlets。

如果您不分配这些字符串,-loadView或者-viewDidLoad将它们释放在-viewDidUnload.

于 2012-09-05T20:11:44.283 回答