0xS*_*ina 2 cocoa-touch objective-c ios
我对此有点了解.我正在通过以下方式初始化UITableViewController子类CTSettingsVC:
CTSettingsVC *settingsVC = [[CTSettingsVC alloc] init];
Run Code Online (Sandbox Code Playgroud)
但是,initWithStyle正在调用初始化程序.这是我的m文件:
@interface CTSettingsVC ()
@end
@implementation CTSettingsVC
- (id)initWithStyle:(UITableViewStyle)style
{
self = [super initWithStyle:style];
if (self) {
NSLog(@"Why is this called?")
self.title = @"Settings";
}
return self;
}
@end
Run Code Online (Sandbox Code Playgroud)
我不确定这是否是预期的行为,或者我是否遗漏了某些东西.
这initWithStyle:是因为是指定的初始化器UITableViewController.看起来像这样的init方法UITableViewController:
- (instancetype)init
{
//NOTE: self is being used instead of super
return [self initWithStyle:UITableViewStylePlain];
}
Run Code Online (Sandbox Code Playgroud)
并非所有UIKit类都遵循这种覆盖init指定初始化程序的默认值的约定.如果我打算使用init默认的初始化程序来确保我的子类在未来版本的UIKit中不被破坏,我经常自己这样做.
| 归档时间: |
|
| 查看次数: |
140 次 |
| 最近记录: |