为什么myArray没有初始化?

时间:2011-04-30 23:57:05

标签: iphone objective-c ios

- (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;
}

4 个答案:

答案 0 :(得分:3)

您是以编程方式创建表还是在Interface Builder中创建表?如果它在界面构建器中,则需要覆盖-(id) initWithCoder:(NSCoder *)coder

答案 1 :(得分:1)

我无法从您给定的代码中判断出来,但如果您以编程方式创建控制器,请确保您正在初始化子类:

[[MyCustomTableViewController alloc] initWithStyle:style];

而不是UITableViewController

[[UITableViewController alloc] initWithStyle:style];

答案 2 :(得分:1)

我建议您将初始化代码放在viewDidLoadviewDidAppear中。您需要确保多次alloc(并且在此过程中无法使用孤立内存),但无论是xib还是以编程方式绑定,都会调用它。

- (void)viewDidLoad
{
    if(!myArray)
    {
         myArray = [[NSMutableArray alloc] init];
    }
}

答案 3 :(得分:0)

发现initWithStyle永远不会被调用。我忘了提到,初始窗口是在IB中构建的,所以我的自定义控制器是从xib调用的,我必须覆盖initWithCoder ....

http://www.iosdeveloperforums.com/thread-initwithstyle-overriding

相关问题