- (id)initWithStyle:(UITableViewStyle)style {
// Override initWithStyle: if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad.
self = [super initWithStyle:style];
if (self) {
myArray = [[NSMutableArray alloc]init];
NSLog(@"ARRAY INITIALIZED"); //THIS NEVER OCCURS
}
return self;
}
答案 0 :(得分:3)
您是以编程方式创建表还是在Interface Builder中创建表?如果它在界面构建器中,则需要覆盖-(id) initWithCoder:(NSCoder *)coder
。
答案 1 :(得分:1)
我无法从您给定的代码中判断出来,但如果您以编程方式创建控制器,请确保您正在初始化子类:
[[MyCustomTableViewController alloc] initWithStyle:style];
而不是UITableViewController
:
[[UITableViewController alloc] initWithStyle:style];
答案 2 :(得分:1)
我建议您将初始化代码放在viewDidLoad
或viewDidAppear
中。您需要确保多次alloc
(并且在此过程中无法使用孤立内存),但无论是xib
还是以编程方式绑定,都会调用它。
- (void)viewDidLoad
{
if(!myArray)
{
myArray = [[NSMutableArray alloc] init];
}
}
答案 3 :(得分:0)
发现initWithStyle永远不会被调用。我忘了提到,初始窗口是在IB中构建的,所以我的自定义控制器是从xib调用的,我必须覆盖initWithCoder ....
http://www.iosdeveloperforums.com/thread-initwithstyle-overriding