CGRect和NSRect之间有什么区别吗?

nev*_*ing 23 cocoa cocoa-touch objective-c

a CGRect和an 之间有什么区别NSRect吗?特别是,我想知道原点的位置.我需要了解哪些重要的差异?

Car*_*rum 19

他们是一样的. 此链接包含更多信息.复制到此处以供快速参考:

CGRect是CoreGraphics的等价物NSRect.

故意使它们在内存中具有相同的布局.因此,允许通过这样做将NSRecta 转换为a CGRect:

CGRect cgrect = *(CGRect *)&nsrect;
Run Code Online (Sandbox Code Playgroud)

CoreGraphics还提供了CGRectMake()一个与NSMakeRect()(返回名称中的动词和对象的反转)相同的功能,除了它返回一个CGRect.

  • 嗯,这是允许的,除了它在编译器中打破严格的别名规则.我将修复该维基页面.使用NSRectFromCGRect和NSRectToCGRect进行转换. (7认同)
  • 在64位中,或者当您使用`NS_BUILD_32_LIKE_64`进行编译时,`NSRect`被定义为`CGRect`,因此您甚至不需要跳过指针箍. (4认同)