Ios5 试图了解segues、内存管理和最佳实践

Ios5 试图了解segues、内存管理和最佳实践,ios5,storyboard,segue,Ios5,Storyboard,Segue,我正在做的是创建一个登录屏幕作为第一页。一旦您登录并通过服务器验证,它将清除登录字段并进入主屏幕。屏幕上有一个后退按钮,我已经给出了文本注销。单击该按钮将返回登录屏幕,并且由于登录按钮在segue之前根据服务器验证您,因此看起来您实际上是在注销 但是,我想在每个页面上都有一个注销按钮。我的想法是在其他屏幕的导航栏上添加一个按钮。作为一个测试,我在屏幕上添加了一个注销按钮,并在登录屏幕上添加了一个segue。我在页面上更新了一个标签,看看它是否返回到同一页面。当它返回到登录屏幕时,标签是空白的,这

我正在做的是创建一个登录屏幕作为第一页。一旦您登录并通过服务器验证,它将清除登录字段并进入主屏幕。屏幕上有一个后退按钮,我已经给出了文本注销。单击该按钮将返回登录屏幕,并且由于登录按钮在segue之前根据服务器验证您,因此看起来您实际上是在注销

但是,我想在每个页面上都有一个注销按钮。我的想法是在其他屏幕的导航栏上添加一个按钮。作为一个测试,我在屏幕上添加了一个注销按钮,并在登录屏幕上添加了一个segue。我在页面上更新了一个标签,看看它是否返回到同一页面。当它返回到登录屏幕时,标签是空白的,这让我相信我没有返回到登录屏幕,而是创建了一个新的登录屏幕。我如何注销并让它基本上回到开始


我这样做是正确的还是有最佳实践?

每次通过segue转换到新的视图控制器时,您都在创建目标视图控制器的新实例。是的,如果您使用segue返回登录屏幕,您将向导航堆栈添加更多视图控制器

听起来您正在使用UINavigationController。如果是这样,您可以使用方法
poptrootviewcontrolleranimated:
从导航堆栈中删除所有视图控制器,并返回到根目录(即您的登录视图控制器)。当其他视图控制器从导航堆栈中移除时,它们将被解除锁定,并且您不会出现您描述的最终内存问题

// do this when the user clicks your Logout button
[[self navigationController] popToRootViewControllerAnimated:NO];