Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 视图控制器初始化_Ios_Objective C - Fatal编程技术网

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