微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

objective-c – 如何阻止将超类方法调用到子类

我正在使用子类扩展类的功能,并且我正在做一些使子类的上下文中的超类方法变得危险(应用程序将在循环中挂起)的脏东西.我知道这不是一个天才的想法,但是我会选择低调的果实,现在它会节省我一些时间.哦,这是一份肮脏的工作,但有人必须这样做.

最重要的是,我需要从外部阻止该方法,或者在直接调用超类时抛出异常. (但我仍然从子类中使用它,除非小心).

最好的方法是什么?

更新—

所以这就是我的目标.我不是自我回答,因为Boaz的回答提到了多种有效的方法,这就是适合我的方式.在子类中,我重写了这样的方法

- (int)dangerousMethod
{
  [NSException raise:@"Danger!" format:@"Do not call send this method directly to this subclass"];
  return nil;
}

我将此标记为已回答,但显然这并不意味着它已经结束,欢迎进一步的建议.

解决方法

只要新实现不调用不安全的超类方法,只需在子类中重新实现不安全的方法并让它不执行任何操作或抛出异常或重新实现它是安全的.

对于这里的C工作人员:Objective C不允许您将方法标记为私有.您可以使用其类别系统将界面拆分为单独的文件(从而隐藏“私有”文件),但类上的所有方法都是公共的.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐