【问题标题】:Why CGFloat has CG prefix not NS prefix?为什么 CGFloat 有 CG 前缀而不是 NS 前缀?
【发布时间】:2016-01-13 06:12:25
【问题描述】:

我搜索了 CGFloat,发现它只是一个 typedef,就像 NSInteger 和 NSUInteger 一样。但我想知道为什么它有 CG 前缀,即 Core Graphics。

【问题讨论】:

标签: ios prefix scalar cgfloat


【解决方案1】:

如您所知,typedef CGFloat 是在CoreGraphics 框架中定义的,所以它的前缀是"CG"。但是,typedef NSInteger 是在<objc/NSObjcRuntime.h> 中定义的,它被用作Foundation 框架,来自NextSTEPCocoa的前身。

Apple SDK 的Naming Notation 是以initial of it's framework 作为所有Class 的前缀,例如AddressBookframework 中定义的ABPersonViewController

【讨论】:

    【解决方案2】:

    因为它是 Core Graphics 库 的一部分,而不是 Cocoa。它代表核心图形Core Graphics 框架是基于 C 语言的 API,它基于 Quartz 高级绘图引擎。

    【讨论】:

      【解决方案3】:

      因为Obj-C只有一个命名空间,为了避免命名空间冲突,全局对象和结构都附加了前缀。 Apple 保留使用所有两个字符前缀的权利,而三个或更多字母前缀则向公众开放。因为CGFloat 是在Core Graphics 库中实现的,所以它使用CG prefix。有关Obj-C 约定,请参阅 Apple 文档:https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Conventions/Conventions.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-10-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-29
        • 2017-05-04
        • 1970-01-01
        相关资源
        最近更新 更多