为什么Objective-C没有命名空间?它似乎是一个简单的功能,可以使一些类名更易读(例如
AVMutableVideoCompositionLayerInstruction
),并且去掉类名前缀中无意义的字母。这主要是因为向后兼容吗?实现命名空间比看起来更困难吗?AVMutableVideoCompositionLayerInstruction
),并且去掉类名前缀中无意义的字母。这主要是因为向后兼容吗?实现命名空间比看起来更困难吗?我不知道答案,但我怀疑“比看起来更难”可能就是答案。你需要在编译器和链接器中引入支持,以一种不破坏现有软件的方式进行。显然,这是可能的(C ++已经做到了),但工具链团队肯定有更高的优先事项。例如,在最近的过去,我们已经出现了垃圾收集、GCD、块和Objective-C 2.0,所以我们不能说他们什么都没做。
命名空间支持是我非常希望引入到Objective-C中的东西。
objectAtIndex: i
一样,读作“索引为i的对象”,而不是“索引为冒号i的对象”。就NS-类而言,这一点无关紧要。如果将它们移动到新的命名空间,所有现有的Cocoa软件都将被破坏。 - JeremyPNextstep::Array
,只需使用using Nextstep;
一次,然后将其引用为Array
,除非存在歧义,然后您需要完全解决它。这实际上会使代码更清晰、更易读。 - devios1