在目标C中使用extern有多好?

推荐答案

你会发现extern在Cocoa框架中被广泛使用,人们很难找到一个令人信服的理由,证明他们的OO"被 destruct 了".相反,可可豆被很好地封装,只expose 它必须expose 的东西,通常通过外部.全局定义的常量当然是最常见的用法,但不一定是唯一有效的用法.

在我看来,使用extern并不一定会" destruct "对象定向.即使在OO中,也经常使用可以从任何地方访问的变量.对于Objective-C中缺少"类变量"(如Java中用static声明的变量)的问题,使用extern是最常见的解决方法.它允许您将引用符号的范围扩展到声明符号的编译单元之外,本质上是通过promise 它将由某人在某处定义.

您还可以将extern__attribute__((visibility("hidden")))结合起来,创建一个可以在编译单元之外使用的符号,也就是说,不能在链接单元之外使用.我将其用于定制库和框架代码,以正确封装更高级别的内部细节.

Objective-c相关问答推荐

如何测试 NSCFBolean 值?

将 NSInteger 变量传递给 NSMutableDictionary 或 NSMutableArray

单元测试私有方法 - 目标 C

如何使用 NSString drawInRect 使文本居中?

右对齐的 UITextField 空格键在 iOS 7 中不前进光标

检测到与加载的库不匹配的 UUID

如何计算多边形的圆角?

添加自定义 initWith?

我应该在 ARC 的 init 方法中引用 self.property 吗?

iOS 5 不允许将下载的数据存储在 Documents 目录中?

UITableView configureCellForDisplay:forIndexPath 中的断言失败:

如何在iphone的objective-c中以编程方式调整图像大小

如何删除应用程序可访问的所有 keys 串项目?

Xcode - 如何将 XIB 连接到 ViewController 类

在 Objective-C 中计算两个日期之间的天数

NSNumber 和 NSInteger 有什么区别?

ARC 下的 NSString 属性应该是强的还是复制的?

如何删除 UIToolBar 上的顶部边框

捕捉固定步数的 UISlider(如 iOS 7 设置应用程序中的文本大小)

Block 隐式保留'self';明确提及touch以表明这是预期行为