如何以正确的方式覆盖一个方便的构造函数?

时间:2010-05-31 10:15:29

标签: iphone

例如,我想从UIButton覆盖:

+ (id)buttonWithType:(UIButtonType)buttonType

所以我会这样做:

+ (id)buttonWithType:(UIButtonType)buttonType {
   UIButton *button = [UIButton buttonWithType:buttonType];
   if (button != nil) {
      // do own config stuff ...
   }
   return button;
}

是正确的方法吗?还是我错过了什么? (是的,我一直在覆盖成千上万的实例方法,但从来没有类方法;))

1 个答案:

答案 0 :(得分:1)

所以你得到了递归。

不幸的是,您无法使用buttonWithType以外的方法创建具有指定类型的按钮。如果您需要在创建后以某种方式初始化按钮,您可以创建自己的静态方法:

+(id)buttonWithTypeEx:(UIButtonType)buttonType {
   UIButton *button = [UIButton buttonWithType:buttonType];
   if (button != nil) {
      // do own config
   }
   return button;
}