我想go 那里.但说真的,一个人如何以"苹果"的方式实现纯虚拟方法呢?您是否对基类使用协议,并在这些方法上抛出异常?

推荐答案

当你用Objective-C编程时,你需要清除你头脑中的虚拟方法之类的东西.你不需要对Objective-C对象调用方法,而是向它们发送消息.对象要么响应消息,要么不响应消息,但由于动态绑定,只有在运行时才能知道这一点.

因此,您可以在基本对象上声明一个方法,而不提供实现,这没有问题(编译器警告除外),但当您直接使用此类方法实例化对象时,您不能启用编译器标记,除非您实际将该消息发送给对象,否则它不会在运行时抛出错误.

创建"虚拟"基类的最佳方法(在我看来)是声明该方法,并为其提供一个引发适当异常的存根实现.

Objective-c相关问答推荐

如何获取 NSDictionary 中的第一个元素?

UITableViewCell 突出显示时使标签的背景清晰

在 Objective-C 中在 iPhone 上使用 HTTP POST 和 GET 的教程

负数的奇怪 Objective-C Mod 行为

使用对象引用的 NSArray,我是显式释放数组中的所有对象还是仅释放数组本身?

iOS - 应用程序关闭时的核心位置和地理围栏

BSXPCMessage 收到消息错误:连接中断

如何在使用 React Native 时实现 SSL 证书固定

UIRefreshControl - 在 iOS 7 中 pull 刷新

MKMapView MKPointAnnotation 点击​​事件

在 ObjC 实现文件中声明的实例变量

了解 performSegueWithIdentifier

为什么不鼓励使用伞式框架?

当用户点击文本字段外的其他区域时如何关闭键盘?

在 NSArray 中查找最大数值

iPhone - dequeueReusableCellWithIdentifier 用法

将浮点数四舍五入到objective C中的下一个整数?

如何获得设备的比例因子?

无法在 iOS7 上将 UITextField 添加到 UIAlertView ...在 iOS 6 中有效

Facebook SDK 登录永远不会在 iOS 9 上回调我的应用程序