首页 > 获取frame的x,y,width,height时,是否推荐使用CGGeometry来获取?

获取frame的x,y,width,height时,是否推荐使用CGGeometry来获取?

最近在制定公司的ios开发技术规范时,参考了纽约时报iOS开发团队的编程风格。文档里面有如下:

CGRect函数

当需要获取一个CGRect矩形的x,y,width,height属性时,应使用CGGeometry函数,而非直接访问结构体成员。
 
例如:
恰当用法:
CGRect frame = self.view.frame;
 
CGFloat x = CGRectGetMinX(frame);
CGFloat y = CGRectGetMinY(frame);
CGFloat width = CGRectGetWidth(frame);
CGFloat height = CGRectGetHeight(frame);
 
不当用法:
CGRect frame = self.view.frame;
 
CGFloat x = frame.origin.x;
CGFloat y = frame.origin.y;
CGFloat width = frame.size.width;
CGFloat height = frame.size.height;

我一般都使用frame.origin.x这样的写法,想问下,你们是不是也是如此,是否应该推荐使用CGGeometry,为什么?

以下是BOOL变量的使用:

恰当用法:
if (isAwesome)
if (![someObject boolValue])
 
不当用法:
if ([someObject boolValue] == NO)
if (isAwesome == YES) // Never do this.

我都是if (isAwesome == YES)类似这样的写法,参考github上的一些知名开源的项目,好像也有这样的写法。不知道这样为什么不被推荐


CGRectX 系统语义性更好,更方便理解,它底层也是调的 view.frame.origin 等,但它提供了其他一些很好用的方法,参见:http://nshipster.cn/cggeometry/

第二个问题,isAwesome 是 bool 类型,事实上 bool 是 char 的 typedef,如果 isAwesome = 2,应该为真,而你的 isAwesome == YES 就是假了(YES 为 1),参见:http://nshipster.cn/bool/

【热门文章】
【热门文章】