你会发现extern
在Cocoa框架中被广泛使用,人们很难找到一个令人信服的理由,证明他们的OO"被 destruct 了".相反,可可豆被很好地封装,只expose 它必须expose 的东西,通常通过外部.全局定义的常量当然是最常见的用法,但不一定是唯一有效的用法.
在我看来,使用extern
并不一定会" destruct "对象定向.即使在OO中,也经常使用可以从任何地方访问的变量.对于Objective-C中缺少"类变量"(如Java中用static
声明的变量)的问题,使用extern
是最常见的解决方法.它允许您将引用符号的范围扩展到声明符号的编译单元之外,本质上是通过promise 它将由某人在某处定义.
您还可以将extern
和__attribute__((visibility("hidden")))
结合起来,创建一个可以在编译单元之外使用的符号,也就是说,不能在链接单元之外使用.我将其用于定制库和框架代码,以正确封装更高级别的内部细节.