什么是在iOS

时间:2015-08-11 13:39:29

标签: ios objective-c iphone uiviewcontroller

我目前正在构建一个小样本iOS应用程序,我以编程方式开发了我的UIViewControllers和视图,我的目标是iOS 7+设备,我有一个简单的问题: 这是我如何展示一个新的控制器

 MySuperController *superController = [[MySuperController alloc] init];
[self.navigationController showViewController:superController sender:self.navigationController];

首先我想知道它是否是显示另一个视图控制器的正确方法? 第二个想象我在LoginViewController中执行那些只显示一次的指令(通常在用户启动应用程序时)如何在创建和显示另一个视图控制器后发布此loginviewcontroller? 我知道这个问题已被提出但是所有提出的解决方案都是旧的/不合适的(我的示例应用程序启用了ARC,我认为默认启用)

我是这个环境的新手任何帮助/指示表示赞赏谢谢

2 个答案:

答案 0 :(得分:1)

这是展示ViewController的好方法。如果你有ARC启用(默认)不担心发布,它将自动释放。

答案 1 :(得分:1)

正如Roy Nakum在评论中所说,如果你使用ARC,你的代码就可以了。您使用本地强变量创建视图控制器,然后显示它。此时,导航控制器获得它的所有权。由于您的强引用是局部变量,因此在方法返回后它不会保留所有权。

但是您的代码还有另一个问题。这条线可能会给你带来问题:

MySuperController *superController = [[MySuperController alloc] init];

您不应使用init来创建视图控制器。它没有任何内容。您应该使用initWithNibName:bundle:(从NIB加载视图控制器)或instantiateViewControllerWithIdentifier(从故事板加载视图控制器。)

可能设置一个视图控制器,因此它的“普通”init方法加载它的视图,但它需要在init方法中进行特殊处理,这不是正常的做事方式。