【发布时间】:2016-01-13 06:12:25
【问题描述】:
我搜索了 CGFloat,发现它只是一个 typedef,就像 NSInteger 和 NSUInteger 一样。但我想知道为什么它有 CG 前缀,即 Core Graphics。
【问题讨论】:
我搜索了 CGFloat,发现它只是一个 typedef,就像 NSInteger 和 NSUInteger 一样。但我想知道为什么它有 CG 前缀,即 Core Graphics。
【问题讨论】:
如您所知,typedef CGFloat 是在CoreGraphics 框架中定义的,所以它的前缀是"CG"。但是,typedef NSInteger 是在<objc/NSObjcRuntime.h> 中定义的,它被用作Foundation 框架,来自NextSTEP,Cocoa的前身。
Apple SDK 的Naming Notation 是以initial of it's framework 作为所有Class 的前缀,例如AddressBookframework 中定义的ABPersonViewController。
【讨论】:
因为它是 Core Graphics 库 的一部分,而不是 Cocoa。它代表核心图形。 Core Graphics 框架是基于 C 语言的 API,它基于 Quartz 高级绘图引擎。
【讨论】:
因为Obj-C只有一个命名空间,为了避免命名空间冲突,全局对象和结构都附加了前缀。 Apple 保留使用所有两个字符前缀的权利,而三个或更多字母前缀则向公众开放。因为CGFloat 是在Core Graphics 库中实现的,所以它使用CG prefix。有关Obj-C 约定,请参阅 Apple 文档:https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Conventions/Conventions.html
【讨论】: