嗨,我是iPhone开发的新手,想要制作一个相当丰富的应用程序,只是想知道在应用程序生命周期后期使用的视图控制器是否应该在AppDelegate中注册,在开始时才根据需要引入?
例如,我从一个登录页面开始,它需要一个UINavigationController,所以我注册了AppDelegate,然后我离开了,但是在一个中间页面之后,我离开了使用TabController那么我是在第三页引入它还是在AppDelegate中注册?
更多的是架构最佳实践问题:)
当应用程序启动时,主xib被加载。当应用启动时我们会在应用委托中提供第一个视图控制器在
函数中- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
这个第一个视图控制器可以是UIViewController, UITabBarController, UINavigationController等。总之,任何视图控制器。
从这里开始,你的应用程序可以通过各种方式一个接一个地显示新的/其他视图控制器,比如模态显示视图控制器,推送视图控制器(在UINavigationController的情况下),等等
我简短地回答你的问题。iPhone应用程序应该使用尽可能少的内存。所以在需要的时候引入一个视图控制器比让所有东西从头到尾打开和运行更少的内存消耗。
一般来说,您应该只实例化需要节省内存的类。如果在代码中创建视图,一个好方法是使用@property的getter方法来创建类。例如,如果你有一个头文件:
@interface MyClass
@property (nonatomic, retain) UIView *myView;
@end
和实现文件:
@implementation MyClass
@synthesize myView;
- (UIView *)myView {
if (myView == nil) {
myView = [[MyView alloc] init];
// do more initializations
}
return myView;
}
你可以在任何时候访问视图,如果它还没有被创建,它将被创建,例如
[superView addSubView:self.myView];