为什么myArray没有被初始化?
- (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;
}
我会建议只是把你的初始化代码在viewDidLoad
或viewDidAppear
。你需要确保你不会多次(和进程中的孤立内存)alloc
,但它会被调用,不管它是以xib
还是以编程方式装配。
- (void)viewDidLoad
{
if(!myArray)
{
myArray = [[NSMutableArray alloc] init];
}
}
我真的不能从给定的代码告诉,但如果你让你的控制器编程,确保你初始化你的子类:
[[MyCustomTableViewController alloc] initWithStyle:style];
不是UITableViewController
:
[[UITableViewController alloc] initWithStyle:style];
您是以编程方式创建表还是在Interface Builder中创建表?如果它在界面构建器中,那么您需要改写-(id) initWithCoder:(NSCoder *)coder
。
我只是继承。 @interface InboxTableViewController:UITableViewController
发现initWithStyle永远不会被调用。我忘了提,初始窗口建立IB,所以我自定义控制器从厦门国际银行叫,我必须覆盖的initWithCoder ....
http://www.iosdeveloperforums.com/thread-initwithstyle-overriding
如果是这种情况,那么initWithCoder被调用,你需要移动你的init代码。 – slycrel 2011-05-01 23:38:42
这几乎就是我的答案所说的。 – 2011-05-03 14:52:11
而如果你把NSLog放在函数的开头呢? – mathk 2011-05-01 01:05:14
函数只是不被调用。我什么也没得到。 – jini 2011-05-01 02:44:21