我正在阅读我的Obj-C书中涉及init方法的部分。我理解他们,但我不知道在哪里调用这个方法。我有一个VC类需要将其中一个@property
设置为另一个值,除了执行其余代码之前的默认值0。 VC是UIViewController
的子类。
这是我在VC.m中的init方法的代码:
- (id)initmethod
{
if((self = [super init])){
self.value = -1 ;
}
return self ;
}
我在哪里打电话给你?我需要有一个调用它的子类吗?或者我是否需要手动创建链接到视图的VC对象并在那里调用此方法?
答案 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: