代码之家  ›  专栏  ›  技术社区  ›  Nimrod

无论对象是从nib加载还是以编程方式创建,执行初始化代码的正确方法是什么?

  •  4
  • Nimrod  · 技术社区  · 15 年前

    我注意到,如果您从nib加载连接视图,如果您想添加初始化代码,则必须重写initWithCoder,因为指定的初始值设定项没有被调用(这是有意义的),如果您没有从nib加载视图,则需要在指定的初始值设定项中执行相同的代码。

    因此,为了处理这两种情况,两种方法都需要相同的初始化代码。

    /*
     * 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;
    }
    

    你对此有何想法?这是做事情的“正确方式”吗?这里是否存在潜在的陷阱,还是我完全错过了什么?

    2 回复  |  直到 15 年前
        1
  •  2
  •   Community CDub    8 年前
        2
  •  1
  •   Thomas Müller    15 年前

    我做完全相同的事情,只是我很懒,我的方法通常被调用 -didInit .