【发布时间】:2014-02-04 02:32:52
【问题描述】:
C99 指定的初始化器还是各种 CGSizeMake、CZRectMake 等宏在现代 Objective-C 中更可取?
这似乎是个人风格偏好,但我看到的 C99 风格的一个优势是价值观的意图清晰明确。
CGRect rect = CGRectMake(x, y, width, height)
如果你混淆了这些值的顺序,那会让你心痛:
CGRect rect = (CGRect){.origin.x = x, .origin.y = y, .size.width = width, .size.height = height};
毫无疑问,.height 正在获得您赋予它的价值。人们继续使用现有宏的原因是什么?
Cocoa Coding Convention 文档中没有关于此的内容,而我遇到的样式指南之一指出它是 GitHub 样式指南:https://github.com/github/objective-c-conventions
【问题讨论】:
-
CGRect rect = (CGRect){.x = x, .y = y, .width = width, .height = height};不会编译,但CGRect rect = (CGRect){.origin.x = x, .origin.y = y, .size.width = width, .size.height = height};会... -
更新了问题以消除编译问题。
标签: objective-c c99