在Objective C中调用init方法

时间:2014-07-11 00:27:00

标签: ios objective-c init

我正在阅读我的Obj-C书中涉及init方法的部分。我理解他们,但我不知道在哪里调用这个方法。我有一个VC类需要将其中一个@property设置为另一个值,除了执行其余代码之前的默认值0。 VC是UIViewController的子类。

这是我在VC.m中的init方法的代码:

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

我在哪里打电话给你?我需要有一个调用它的子类吗?或者我是否需要手动创建链接到视图的VC对象并在那里调用此方法?

1 个答案:

答案 0 :(得分:1)

是的,你需要在创建控制器时调用它,

VC * vcInstance = [[VC alloc] initMethod];

确实没有必要创建自己的init方法,你可以直接覆盖init。

如果您在故事板中制作控制器,则需要覆盖initWithCoder,并在那里设置您的value属性。

-(id)initWithCoder:(NSCoder *)aDecoder {
    if (self = [super initWithCoder:aDecoder]) {
        _value = -1; // you should use the ivar rather than self.propertyName inside an init method
    }
    return self;
}

同样,如果控制器是在xib文件中制作的,则应覆盖initWithNibName:bundle: