objective-c - 在 Objective-C 中创建一个抽象类

我最初是一名 Java 程序员,现在使用 Objective-C。我想创建一个抽象类,但这在 Objective-C 中似乎是不可能的。这可能吗?

如果不是,我可以在 Objective-C 中与抽象类有多接近?

最佳答案

通常,Objective-C 类只是按照约定是抽象的——如果作者将一个类记录为抽象类,则不要在没有继承它的情况下使用它。然而,没有编译时强制阻止抽象类的实例化。事实上,没有什么可以阻止用户通过类别(即在运行时)提供抽象方法的实现。您可以通过在抽象类的方法实现中引发异常来强制用户至少覆盖某些方法:

[NSException raise:NSInternalInconsistencyException 
            format:@"You must override %@ in a subclass", NSStringFromSelector(_cmd)];

如果你的方法返回一个值,使用起来会更容易一些

@throw [NSException exceptionWithName:NSInternalInconsistencyException
                               reason:[NSString stringWithFormat:@"You must override %@ in a subclass", NSStringFromSelector(_cmd)]
                             userInfo:nil];

那么你就不需要从方法中添加返回语句了。

如果抽象类真的是一个接口(interface)(即没有具体的方法实现),使用 Objective-C 协议(protocol)是更合适的选择。

https://stackoverflow.com/questions/1034373/

相关文章:

ios - AVFoundation, captureStillImageAsynchronousl

ios - 如何浏览文本字段(下一步/完成按钮)

objective-c - 如何打印出方法名称和行号并有条件地禁用 NSLog?

ios - 如何将 UIButton 的标题设置为左对齐?

objective-c - 如何在 Xcode 4 中设置 NSZombieEnabled?

objective-c - 如何检查 NSDictionary 或 NSMutableDiction

objective-c - 如何将百分号添加到 NSString

ios - 设置 UITextField 的最大字符长度

objective-c - 如何迭代 NSArray?

objective-c - 类方法和实例方法有什么区别?