如何在ViewController中初始化实例变量和属性

时间:2012-03-05 06:51:36

标签: iphone objective-c ios xcode ios5

在ViewController中初始化实例变量和属性的语法是什么? 这是实现的代码

CalcViewController.m

#import "CalcViewController.h"

@interface CalcViewController ()
{
 int initialValue;
}

@property(nonatomic,weak) BOOl isFirstEntry;

@end


@implementation CalcViewController
@synthesize isFirstEntry = _isFirstEntry;
.......
.......
.......
.......
@end

-(id) init
{
self = [super init];
     if(self)
      {
      ............;
      }
return self;
}

这不会被触发。

3 个答案:

答案 0 :(得分:3)

如果您不想在加载方法期间执行此操作,请实现指定的初始值设定项并在其中初始化。如果你没有重新定义指定的初始化程序,那么你从超类继承它,你将在超类的指定初始化程序中初始化。 UIViewController指定的初始化程序为:

- (id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle

答案 1 :(得分:1)

使用

创建对象时将调用init方法
CalcViewController *calcView = [CalcViewController alloc] init]; or [CalcViewController new];

如果使用其他启动方法创建对象,则不会调用它。简而言之,你必须记住init就像任何其他方法一样。

答案 2 :(得分:0)

我猜你的ViewController是从nib加载的..(Xcode项目模板) 尝试以下之一:

- (id)initWithCoder:(NSCoder)aDecoder {
    self = [super initWithCoder:aDecoder];
    if(self) {
        ...
    }
    return self;
}

但请注意,调用此方法时,未设置Interface Builder的所有连接(父级,子级,操作,...)。如果您想依赖IB连接,可以使用此方法:

- (void)awakeFromNib{
    ...
}

请注意,只有从NIB加载ViewController本身时才会调用这两种方法,而不仅仅是视图。这通常是因为XCode为您提供了一个MainWindow.xib,其中包含一个视图控制器( - > NIB)。