移植/重写此库的正确方法是什么?

时间:2011-03-22 16:46:02

标签: objective-c ios porting

我正在尝试在Objective-C中重写Java库。我想将其重写为API,以便需要实现某些方法。我已经开始尝试重写代码,但我遇到了几个问题。

  • Objective-C是否支持抽象类?

  • 如果没有,我应该编写协议,还是只使用我自己的课程?我知道您可以标记所需的方法。

  • 如果我写协议,如果我将所有协议分组到一个头文件中,或者最好不要这样做,可以吗?

  • 如果我使用自己的类,有没有办法要求抽象方法的子类化?

2 个答案:

答案 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];
}