关于Objective-C中是否有可能"重载"方法,似乎存在一些争论/分歧.暂且不能在Objective-C中定义方法重载是与C++相同的术语(因为方法签名语法不同),我特别要问:以下哪一项是允许的,哪些不是?
1)宣布/实施这两种方法的类:
- (void) doSomethingWithObject:(ClassA*) object;
- (void) doSomethingWithObject:(ClassB*) object;
Run Code Online (Sandbox Code Playgroud)
2)宣布/实施这两种方法的类:
- (void) doSomethingWithObject:(ClassA*) object;
- (BOOL) doSomethingWithObject:(ClassA*) object;
Run Code Online (Sandbox Code Playgroud)
3)声明/实现此方法的类:
- (void) doSomethingWithObject:(ClassB*) object;
Run Code Online (Sandbox Code Playgroud)
...当其超类声明/实现此方法时:
- (void) doSomethingWithObject:(ClassA*) object;
Run Code Online (Sandbox Code Playgroud)
(和A)相互冲突的类似物,A)ClassB下降ClassA,B)不.
问题1:无法做到:Objective-C不包括方法名称中的类型; 没有破坏.它可能适用于Objective-C++ - 从未使用过那么多.
问题2:相同.不行.
问题3:会工作吗
编辑:通常,方法名称不包含任何类型,因此如果您删除类型并且它们是相同的,那么它将被视为相同,因此将不允许在同一个类中.顺便说一下,如果它在不同的类中它会起作用,尽管如果调用中使用的类型和被调用的类型不完全一致,你可能会感到困惑.
| 归档时间: |
|
| 查看次数: |
3509 次 |
| 最近记录: |