我注意到,如果您从 nib 加载连接的视图,如果您想添加初始化代码,则必须覆盖 initWithCoder,因为指定的初始化程序不会被调用(这确实有意义),并且如果您不加载视图从笔尖开始,则需要在指定的初始化程序中执行相同的代码。
因此,为了处理这两种情况,您需要在两种方法中使用相同的初始化代码。
这是迄今为止我提出的最佳解决方案,但我想知道是否有一些更传统的方法可以做到这一点。此代码位于 UITableViewCell 子类中,但实际上可以是任何 UIView:
/*
* Seems like there should be a standard method for this already.
*/
- (void)didFinishInitializingOrUnacrhiving {
/*** Do stuff that makes the most sense to do in an initializer. ***/
}
- (id)initWithCoder:(NSCoder *)aDecoder {
if (self = [super initWithCoder:aDecoder]) {
[self didFinishInitializingOrUnacrhiving];
}
return self;
}
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
[self didFinishInitializingOrUnacrhiving];
}
return self;
}
那么对此有什么想法吗?这是做事的“正确方式”吗,这里有潜在的陷阱,还是我完全错过了什么?