gpt4 book ai didi

iphone - 内存警告后导航 Controller 堆栈问题

转载 作者:行者123 更新时间:2023-11-29 04:49:10 26 4
gpt4 key购买 nike

我在程序中使用 UINavigationController,当我位于导航堆栈中的第四个或第五个 Controller 时,程序收到内存警告,并且无法后退。我按后退按钮,导航栏动画正在发生,但 Controller 没有弹出,我仍然看到旧 View 。谁能帮我解决这个问题吗?

我的 subview 有属性:

@property (nonatomic,retain) UITableView *searchTableView;
@property (nonatomic,retain) UISegmentedControl *categorySegmentedControl;
@property (nonatomic,retain) UISearchBar *searchTableBar;
@property (nonatomic,retain) UIView *footerView;
@property (nonatomic,retain) UINavigationItem *navigationItem;

我的viewDidUnload方法

- (void)viewDidUnload
{
[super viewDidUnload];
self.searchTableView = nil;
self.categorySegmentedControl = nil;
self.searchTableBar = nil;
self.navigationItem = nil;
self.footerView = nil;
}

我的释放

-(void)dealloc
{
[super dealloc];
[searchTableView release];
[categorySegmentedControl release];
[searchTableBar release];
[navigationItem release];
[footerView release];
[currentValues release];
}

而且我注意到了奇怪的规律性 - 仅当我从没有选项卡栏的 View 移动到有选项卡栏的 View 时,此错误才会出现。

最佳答案

听起来您可能正在 Controller 的 viewDidLoad 中进行一些设置和/或在 viewDidUnload 中释放应该在 initWithNibName:bundle 和 dealloc 中完成的内容。

viewDidLoad 和 viewDidUnload 在创建和销毁 Controller 时不会被调用,它们会在 Controller 内的 View 被创建和销毁时被调用,并且这种情况随时可能发生,特别是当 View Controller 收到内存警告时位于后台(例如,不是导航 Controller 中的顶 View )。

确保您以这样的方式编写 Controller :如果 viewDidUnload 被调用,或者 viewDidLoad 被多次调用,您不会丢失数据或破坏任何内容。

抱歉,如果这个答案有点模糊,但是如果您发布 View Controller 的代码,我可能会给您更具体的建议。

关于iphone - 内存警告后导航 Controller 堆栈问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9148382/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com