2

假设我有一个AwesomeClass但我无法更改它的实现(即它来自静态库或框架)。我喜欢一切,AwesomeClass除了- (void)thatOneBadMethod。我可以将其子类化为AwesomeClassMyAwesomeClass使用空实现(而不是调用super)覆盖该方法,但问题是,如果我的开发人员正在使用MyAwesomeClass并且不知道我的行为,他可能会尝试使用thatOneBadMethod认为它正在做的事情它不是。

是否有一些预处理器指令我可以放入覆盖中,thatOneBadMethod以便他在尝试使用它时收到编译器错误或警告?

4

1 回答 1

3

您可以在头文件中弃用该方法:

-(void)thatOneBadMethod __attribute__ ((deprecated("Unsupported, please call 'thatOneGoodMethod' instead!")));

但我也建议当人们尝试调用它时产生一个错误:

-(void)thatOneBadMethod {
  NSAssert(NO, @"Unsupported, please call 'thatOneGoodMethod' instead!");
}
于 2012-05-11T21:54:47.073 回答