我可以依靠nil UIView为其框架返回CGRectZero吗?

an0*_*an0 9 objective-c ios

是的,我看到了这个:

如果该方法返回一个结构,如Mac OS X ABI函数调用指南所定义的那样在寄存器中返回,则发送给nil的消息将返回结构中每个字段的0.0.其他结构数据类型不会用零填充.

我只是不明白.

BJ *_*mer 15

如果您使用的是最新版本的LLVM编译器(Xcode 4.2或更高版本),那么是的,nil使用struct-returning方法进行消息传递将生成零填充结构.在这种情况下CGRect,这意味着一个等于的矩形CGRectZero.

资料来源:Greg Parker,他在Apple的ObjC运行时工作.

  • 是; 过去,在大多数情况下,消息传递nil不会返回零填充结构,除了幸运的情况,结构返回值的ABI将在寄存器中传递.(仅适用于非常小的结构.)基于堆栈的返回值不是零填充.但是使用Xcode 4.2或更高版本的LLVM编译器,它们现在*总是*零填充. (3认同)