Почему CGFloat имеет префикс CG, а не префикс NS?

Я искал CGFloat и обнаружил, что это просто определение типа, такое же, как NSInteger и NSUInteger. Но я хочу знать, почему у него префикс CG, то есть Core Graphics.


person chirag sanghvi    schedule 13.01.2016    source источник
comment
См.: stackoverflow.com/questions/6702923/   -  person Paul R    schedule 13.01.2016


Ответы (3)


Как вы знаете, typedef CGFloat определен в CoreGraphics фреймворке, поэтому его префикс "CG". Однако typedef NSInteger определен в <objc/NSObjcRuntime.h> и используется как Foundation фреймворк, который происходит от NextSTEP, предшественника Cocoa.

Naming Notation Apple SDK принимает initial of it's framework в качестве префикса всех Class, таких как ABPersonViewController, определенных в AddressBookframework.

person SeraZheng    schedule 13.01.2016

Потому что это часть библиотеки Core Graphics, а не Cocoa. Это означает Основная графика. Платформа Core Graphics основана на C. API, основанный на расширенном движке рисования Quartz.

person Anni S    schedule 13.01.2016

Поскольку Obj-C имеет только одно пространство имен, чтобы избежать конфликтов пространств имен, глобальные объекты и структуры имеют прикрепленные к ним префиксы. Apple оставляет за собой право использовать все двухсимвольные префиксы, в то время как трехбуквенные префиксы открыты для общего использования. Поскольку CGFloat реализован в библиотеке Core Graphics, она использует библиотеку CG prefix. См. документацию Apple по Obj-C соглашениям: https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Conventions/Conventions.html

person Rwhoot    schedule 13.01.2016