objective-c - 子类化 Objective C 类方法

标签 objective-c ios oop inheritance

我有一个关于子类化和类方法的问题。

我有一个基类MyBaseClass,它有一个方便的类方法

+ (id)giveMeAClassUsing:(NSString *)someParameter;

MyBaseClass 不是单例。

现在,我想创建一个 MyBaseClass 的子类,我们称它为 MyChildClass。我希望在 MyChildClass 上也有相同的类方法。此外,我还希望在执行此操作时初始化 MyChildClass 上的实例变量。

会做这样的事情:

+ (id)giveMeAClassUsing:(NSString *)someParameter {

      MyChildClass *anInstance = [super giveMeAClassUsing:someParameter];
      anInstance.instanceVariable = [[UIImageView alloc] initWithFrame:someFrame];

      return anInstance;
}

有效吗?

感谢您(提前)提供的所有帮助,解决了我的困惑并澄清了一些概念!

干杯!

最佳答案

那会很好的。

可能更好的方法是以您不需要覆盖它的方式定义您的便捷构造函数:

 + (id)myClassWithString: (NSString *)string {
     return [[[self alloc] initWithString:string] autorelease];
 }

无论调用哪个父类(super class)或其任何子类,这都会做正确的事情。

然后只更改子类中的initWithString: 方法来处理初始化:

- (id)initWithString: (NSString *)string {
    return [self initWithString:string andImageView:[[[UIImageView alloc] initWithFrame:someFrame] autorelease]] ;
}

关于objective-c - 子类化 Objective C 类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10321887/

相关文章:

ios - 如何通过 podfile 共享两个目标中的一些 pod

iPhone 后退按钮文本 iOS5+ 未显示?

ios - 如何在 iOS 上通过地址找出导致崩溃的数组的名称?

ios - 添加 iPhone 对 sqlite DB 的支持

ios - 创建依赖于另一个 pod 的 pod

python - 继承 namedtuple 还是实现 __slots__?

objective-c - 显示/隐藏密码切换。错误还是功能?

ios - 试图理解drawrect中上下文的范围

java - 您可以通过公共(public)嵌套接口(interface)访问私有(private)[静态]嵌套类吗?

PHP/MySql - 查询具有嵌套对象的对象的最佳方式