我几乎可以肯定这是不可能的,但我想知道是否有更了解 Objective-C 的人有不同的想法。我怀疑这会起作用的原因是,虽然可怕的运行时黑客可能有可能,但我怀疑编译器是否能够理解。
我想知道的是是否有可能有一个可以与另一个互换的协议:
// let <ShortName> be a synonym for <NSReallyReallyLongName>
id <ShortName> obj = [NSSomething objectConformingtoReallyReallyLongProtocolName];
本质上,我想概括我的 API 以获取符合的对象<NSReallyReallyLongName>
,但我希望我和我的 API 的消费者都不必输入太多。一种可能的解决方案是typedef
:
typedef id <NSReallyReallyLongName> ShortName;
但这让 API 消费者不太清楚我正在建立一个基于协议的约束。有任何想法吗?
更新:
在下面的答案中看到非常简单的解决方案时,我觉得有点愚蠢。谢谢你逗我。