-3

我有 UIViewController 我添加到 UIViewControler 这个:

ReportViewController *reportVC = [[ReportViewController alloc]initWithNibName:@"ReportViewController" bundle:nil];
[self.view addSubview:reportVC.view];

我尝试添加

[reportVC release];

在这行之后,当我尝试删除此 reportVC.view 时,我得到了 exepction

[self.view removeFromSuperview];

像这样发布它时我犯了错误吗?

4

4 回答 4

3

在您的代码中,您正在从超级视图中删除“self.view”,这是您不应该的。
您必须从 superview 中删除“reportVC.view”。

你可以这样写:

[reportVC.view removeFromSuperView];

[reportVC release];

reportVC = nil;
于 2013-05-13T05:22:56.197 回答
1

如果您稍后在代码中需要您的类实例,请不要释放它。您需要在 .h 文件中声明它并调用[reportVC release]您的- (void) dealloc方法。

于 2013-05-12T23:09:34.940 回答
0
 [reportVC release]     

这意味着你释放了视图控制器对象的内存。再次尝试对已经释放的视图控制器对象进行操作。所以删除那里的语句并写入dealloc方法或使用arc项目不需要你释放内存。它会自动释放。

于 2013-05-13T05:23:43.457 回答
0

在这种情况下,Self 将是您在调用 [reportVC release] 时释放的内存。然后,您正在访问已释放对象的属性“self.view”。

于 2013-05-12T22:05:14.023 回答