我正在尝试在Objective-C中重写Java库。我想将其重写为API,以便需要实现某些方法。我已经开始尝试重写代码,但我遇到了几个问题。
Objective-C是否支持抽象类?
如果没有,我应该编写协议,还是只使用我自己的课程?我知道您可以标记所需的方法。
如果我写协议,如果我将所有协议分组到一个头文件中,或者最好不要这样做,可以吗?
如果我使用自己的类,有没有办法要求抽象方法的子类化?
答案 0 :(得分:2)
在Objective-C中有编译器强制抽象类,协议就是你所追求的。
我个人会将协议分解为多个标题以便易读。
答案 1 :(得分:1)
没有内置支持来创建抽象类,但您可以通过覆盖allocWithZone:
方法来实现。
+ (id)allocWithZone:(NSZone *)zone {
if([self class] == [MyAbstractClass class]) { // Check if it is a subclass or not
NSLog(@"MyAbstractClass is an abstract superclass and should not be allocated directly. Use a concrete subclass instead.");
return nil;
}
return [super allocWithZone:zone];
}