Ios 视图控制器初始化
通常在应用程序委托中初始化视图控制器,如下所示:Ios 视图控制器初始化,ios,objective-c,Ios,Objective C,通常在应用程序委托中初始化视图控制器,如下所示: - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; // Override point
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch
TestViewController *VC = [[TestViewController alloc] **init**];
self.window.rootViewController = VC;
return YES;
}
但VC将实现一个初始化方法,如-instancetypeinitWithNibName:
init如何调用initWithNibName:?调用顺序是什么?如果查看默认实现,它只调用超类的版本:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
不需要实现initWithNibName,因为默认的init方法将为您调用initWithNibName:nibNameOrNil的超级实现
如果您正在使用仅代码无XIB创建TestViewController,那么您发布的代码是可以接受的。否则,您应该调用initWithNibName并传递要用于该视图控制器的nib的名称。init不调用initWithNibName:因此,所有视图控制器都应该实现init方法,并且init方法内部需要调用initWithNibName?取决于。如果您不使用NIB,则不需要调用initWithNibName