关于是否可以在 Objective-C 中“重载”方法似乎存在一些争论/分歧。撇开在 Objective-C 中定义方法重载的术语与 C++ 中的术语相同(因为方法签名语法不同)是不可能的,我要特别问:以下哪些是允许的,哪些是不允许的?
1) 声明/实现这两种方法的类:
- (void) doSomethingWithObject:(ClassA*) object;
- (void) doSomethingWithObject:(ClassB*) object;
2) 声明/实现这两种方法的类:
- (void) doSomethingWithObject:(ClassA*) object;
- (BOOL) doSomethingWithObject:(ClassA*) object;
3) 声明/实现此方法的类:
- (void) doSomethingWithObject:(ClassB*) object;
...当它的超类声明/实现这个方法时:
- (void) doSomethingWithObject:(ClassA*) object;
(以及冲突返回值的类似物),当 A)ClassB
从 下降ClassA
和 B) 不是时。