Я искал CGFloat и обнаружил, что это просто определение типа, такое же, как NSInteger и NSUInteger. Но я хочу знать, почему у него префикс CG, то есть Core Graphics.
Почему CGFloat имеет префикс CG, а не префикс NS?
Ответы (3)
Как вы знаете, typedef CGFloat
определен в CoreGraphics
фреймворке, поэтому его префикс "CG"
. Однако typedef NSInteger
определен в <objc/NSObjcRuntime.h>
и используется как Foundation
фреймворк, который происходит от NextSTEP
, предшественника Cocoa
.
Naming Notation
Apple SDK принимает initial of it's framework
в качестве префикса всех Class
, таких как ABPersonViewController
, определенных в AddressBook
framework.
Потому что это часть библиотеки Core Graphics, а не Cocoa. Это означает Основная графика. Платформа Core Graphics основана на C. API, основанный на расширенном движке рисования Quartz.
Поскольку Obj-C
имеет только одно пространство имен, чтобы избежать конфликтов пространств имен, глобальные объекты и структуры имеют прикрепленные к ним префиксы. Apple оставляет за собой право использовать все двухсимвольные префиксы, в то время как трехбуквенные префиксы открыты для общего использования. Поскольку CGFloat
реализован в библиотеке Core Graphics
, она использует библиотеку CG prefix
. См. документацию Apple по Obj-C
соглашениям: https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Conventions/Conventions.html