我一直在为我的对象创建自定义初始化程序,只是因为这感觉比以其他方式设置变量更好。在这些初始化程序中,我通常设置对象的变量,然后返回对主 init 的调用。
因此,例如,在 UIViewController 子类中,我的代码如下所示:
-(id)initWithValue:(int)val {
self.value = val;
return [self initWithNibName:nil bundle:nil];
}
其中value
是一个属于该 ViewController 子类的整数,并且通常有比这更多的值。
但是,最近我开始先设置 self,因为我认为它self = [self init...]
会替换类的当前实例,因此我会丢失该 self 的实例。所以,我开始做:
-(id)initWithValue:(int)val {
self = [self initWithNibName:nil bundle:nil];
self.value = val;
return self;
}
然后,我最近检查了原始版本,并意识到一切正常,并且没有必要进行更改。
所以,我的问题是:
- [super initWithNibName:bundle:] 做了什么导致它创建一个对象但不替换原始对象?
- 这两个版本中的一个比另一个更好使用还是它们都等效?如果一个更好,应该使用哪个?
提前致谢!