gpt4 book ai didi

iphone - iOS 中的多个 Storyboard + 内存管理

转载 作者:行者123 更新时间:2023-12-03 18:52:13 24 4
gpt4 key购买 nike

我在我的 iOS6/iOS6 应用程序中将多个 Storyboard与 NIB 文件混合在一起。

内存管理如何与多个 Storyboard配合使用?

  • 启动 StoryboardA 后,如果我返回另一个 nib 文件/转到另一个 StoryboardA,该 StoryboardA 是否会保留在内存中?
  • 我是否能够以使用 UIViewControllers 获取导航 Controller 堆栈中的 View 数组的方式获取堆栈中 Storyboard的“数组”?
  • 对于内存管理,我可以从内存中弹出或删除 Storyboard吗?当我转到另一个 Storyboard时,我是否将其设置为零?

我使用多个 Storyboard与 nib 文件混合的原因:

  • 我想要复杂的叙事 Storyboard流程。将它们全部塞到一处是没有意义的。
  • 最终,我将与许多不同的人合作,我发现团队合作、版本控制的论点足以让我选择多 Storyboard路线
  • 我正在混合 NIB 文件,因为 Storyboard尚不能处理复杂的 nib 文件、许多编程 View 等。

我的代码片段

InitialNibFile.m 内部 <-- 从 appdelegate 启动。

- (IBAction)newStoryboardBtnPressed:(id)sender {

[self.view removeFromSuperview]; // here I remove this view from the superview to save memory
UIStoryboard *newStoryboard = [UIStoryboard storyboardWithName:@"NewStoryboard" bundle:nil];
UIViewController *initialSettingsVC = [newStoryboard instantiateInitialViewController];

[self presentViewController:initialSettingsVC
animated:YES completion:nil];

}

在这里,在 Storyboard场景内的 UIViewController View 内。

- (IBAction)anotherStoryboardBtnPressed:(id)sender {

// I'm inside a storyboard right now. I'm calling another storyboard.
// can i remove this storyboard before i launch the otherone? will keeping 2 or 3 toryboards in memory cause a memory leak?

UIStoryboard *settingsStoryboard = [UIStoryboard storyboardWithName:@"AnotherStoryboard" bundle:nil];
UIViewController *initialSettingsVC = [settingsStoryboard instantiateInitialViewController];
// i'm going to load this view controller modally
// initialSettingsVC.modalTransitionStyle=UIModalTransitionStyleFlipHorizontal;
[self presentViewController:initialSettingsVC
animated:YES
completion:nil];

}

最佳答案

所以我们开始=)

启动 StoryboardA 后,如果我返回另一个 nib 文件/转到另一个 Storyboard,该 StoryboardA 是否会保留在内存中?
Storyboard由您创建的 UIViewController(通过 storyboard)属性保留。所以是的,它确实会保留在内存中,直到它的所有 View Controller 都被释放为止。查看(简要)documentation .

我是否能够像使用 UIViewControllers 获取导航 Controller 堆栈中的 View 数组一样获取堆栈中 Storyboard的“数组”?
不,因为 Storyboard是相互独立的。但是,您可以通过迭代导航堆栈中的 View Controller 来获取 Storyboard。

对于内存管理,我可以从内存中弹出或删除 Storyboard吗?当我转到另一个 Storyboard时,是否将其设置为零?
只要内存中有实例化的 View Controller ,它就会一直存在。当您使用storyboardWithName:时,会返回一个自动释放的对象。 View Controller 会保留它,所以不用担心释放或设置为 nil。

对于您的其他问题的引用,我尊重 SO 和互联网的其余部分:
Best Practices for Storyboards on SO
UIStoryboard best practices
Multiple Storyboards in iOS on SO

快乐的 Storyboard。

关于iphone - iOS 中的多个 Storyboard + 内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13751654/

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