我有一个关于子类化和类方法的问题。
我有一个基类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/