removeFromSuperView无法在带有iOS5的iPad2中运行

时间:2011-12-21 12:22:37

标签: iphone objective-c uiview ios5

我有removeFromSuperView这个小问题,因为它至少不适用于使用iOS 5的iPad2。我在我的表填充数据之前显示自定义UIView警报,一旦完成,我将其删除从超级视角。除了iPad2(iOS5)之外,其他所有设备都能正常工作。我错过了什么吗?

感谢任何帮助。

谢谢。

·H

@private
    SaveUIDisplayViewController *wbsSummaryLoadView;

的.m

// Displaying

wbsSummaryLoadView = [[SaveUIDisplayViewController alloc] initWithNibName:@"SaveUIDisplayViewController" bundle:nil];
[[wbsSummaryLoadView view] setFrame:[self view].bounds];
[wbsSummaryLoadView setupSavingViewWithTitle:NSLocalizedString(@"Loading...", @"")];
[[self view] addSubview:wbsSummaryLoadView.view];

// Removing 

[wbsSummaryLoadView.view removeFromSuperview];
[wbsSummaryLoadView release];
wbsSummaryLoadView = nil;

2 个答案:

答案 0 :(得分:0)

添加视图后,您可以立即将其释放。 (使用addSubview创建副本) 尝试:

[[self view] addSubview:wbsSummaryLoadView.view];
[wbsSummaryLoadView release];

然后你不需要关心,因为如果你发布整个视图,你也会释放添加的视图。

答案 1 :(得分:0)

您正在存储两个不同的对象。创建SaveUIDisplayViewController时,您将在该方法中声明一个新实例。当你删除它时,你正在使用(我猜)成员变量。

SaveUIDisplayViewController *wbsSummaryLoadView = [[SaveUIDisplayViewController alloc] initWithNibName:@"SaveUIDisplayViewController" bundle:nil];

这将隐藏您在对象标题中定义的任何wbsSummaryLoadView声明。

当你来删除它

[wbsSummaryLoadView.view removeFromSuperview];

必须在某处声明wbsSummaryLoadView(这是我猜你没有发布你的.h文件的地方)如果这是在标题中声明的话,那么它就不会与你的那个相同创建它(事实上它此时可能是nil