Objective-C中的协议同义词?

Objective-C中的协议同义词?,objective-c,protocols,synonym,Objective C,Protocols,Synonym,我几乎可以肯定这是不可能的,但我想知道是否有更了解Objective-C的人有不同的想法。我怀疑这是否可行的原因是,尽管这可能是可怕的运行时黑客行为造成的,但我怀疑编译器是否能够理解 我想知道的是,是否可能有一个协议可以与另一个协议互换: // let <ShortName> be a synonym for <NSReallyReallyLongName> id <ShortName> obj = [NSSomething objectConformin

我几乎可以肯定这是不可能的,但我想知道是否有更了解Objective-C的人有不同的想法。我怀疑这是否可行的原因是,尽管这可能是可怕的运行时黑客行为造成的,但我怀疑编译器是否能够理解

我想知道的是,是否可能有一个协议可以与另一个协议互换:

 // let <ShortName> be a synonym for <NSReallyReallyLongName>
 id <ShortName> obj = [NSSomething objectConformingtoReallyReallyLongProtocolName];
但这让API消费者不太清楚我正在建立一个基于协议的约束。有什么想法吗

更新:
当我看到下面答案中真正简单的解决方案时,我觉得有点愚蠢。谢谢你的幽默。

还没有尝试过这个,但是让短名称协议包含消息定义,而长名称协议扩展它而不添加新的消息定义怎么样。由于short name是父级,因此任何返回long name实例的操作都不会引发任何问题,您的用户可以使用short name

#define ShortName LongName

但从接吻的角度来看,我真的建议你重新思考,完全避免这个想法。它更容易混淆,而不是帮助。

没有尝试过这一点,但是让短名称协议包含消息定义,而长名称协议扩展它而不使用新的消息定义如何。由于short name是父级,因此任何返回long name实例的操作都不会引发任何问题,您的用户可以使用short name


但从接吻的角度来看,我真的建议你重新思考,完全避免这个想法。这更容易混淆,而不是帮助。

你也可以尝试,尽管这可能只是针对课堂。

你也可以尝试,尽管这可能只是针对课堂。

嘿,这很聪明。哈哈,那真是太聪明了。哈哈,这似乎不是个好主意。这是一个令人困惑的问题解决方案,自多年前自动完成出现以来,这个问题就不存在了。如果你不在乎线路噪音的话,这是真的。(尽管如此)这似乎不是个好主意。这是一个令人困惑的问题解决方案,自多年前自动完成出现以来,这个问题就不存在了。如果你不在乎线路噪音的话,这是真的。(不过,我明白了)谢谢你的想法和建议。普遍的共识似乎是,这是一个相当糟糕的想法,应该避免。谢谢你的想法,以及建议。普遍的共识似乎是,这是一个相当糟糕的想法,应该避免。哇,我从来没有听说过。非常整洁!不幸的是,它似乎只适用于类。是的——不适用于协议。发出的错误是:“警告:找不到'FooProtocol'的接口声明”,其中FooProtocol是上下文中的“长名称”。哇,我从没听说过这个。非常整洁!不幸的是,它似乎只适用于类。是的——不适用于协议。发出的错误是:“警告:找不到'FooProtocol'的接口声明”,其中FooProtocol是此上下文中的“长名称”。
#define ShortName LongName