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

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

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

最好的方法是什么?

更新—

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

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

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

解决方法

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

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

相关文章

我正在用TitaniumDeveloper编写一个应用程序,它允许我使用Ja...
我的问题是当我尝试从UIWebView中调用我的AngularJS应用程序...
我想获取在我的Mac上运行的所有前台应用程序的应用程序图标....
我是一名PHP开发人员,我使用MVC模式和面向对象的代码.我真的...
OSX中的SetTimer在Windows中是否有任何等效功能?我正在使用...
我不确定引擎盖下到底发生了什么,但这是我的设置,示例代码和...