Objective C中C99的使用

今天在小伙伴@xdream86一篇文章中看到这样的用法:


CGRect rect = {
             .origin.x = 3.0,
             .origin.y = 12.0,
             .size.width = 15.0,
             .size.height = 80.0
};

这是C99初始化语法,看到的第一眼就感觉比下面的初始化简洁明了多了,就算没用过CGRect也知道那4个参数分别代表什么意思。

CGRectMake(3.0,12.0,15.0,80.0);

但仅仅只是看起来更直白一点而已?

1.一般我们在使用CGRectMake初始化的时候,如果哪一个参数是要经过计算得到,那么我们还要先定义变量计算出这个值,但是,如果用C99格式的话,我们便可以这样写:

CGRect frame = (CGRect){
                       .origin.x = (a / 2) + 60,
                       .origin.y = (b / 2) + 30,
                       .size.width =  a * 2,
                       .size.height = b * 2
};

看起来还是那么简洁明了。

2.还有一个好处就是,当我们通过直接指定origin.x,origin.y,size.width,size.height这四个参数时,即使初始化的时候顺序乱掉,但结果还是我们想要的,例如:

CGRect frame = (CGRect){
                        .size.width = 100,
                        .size.height = 40,
                        .origin.x = 50,
                        .origin.y = 80
};

so,现在你知道为什么我更倾向于C99格式了吧,但是你以为只有这些?

3.在用CGRectMake初始化的时候,相信很多人都这样写过:

CGRect frame = CGRectMake(
                          self.view.frame.origin.x,
                          self.view.frame.origin.y,
                          100,
                          100);

你就没有点被qj的感觉?反正每次这么写我是有点不爽。但是如果使用C99便方便很多:

CGRect frame = (CGRect){
                        .origin = self.view.frame.origin,
                        .size.width = 100,
                        .size.width = 100
}

当然,在需要的时候使用C99语法还是能方便很多的,就看你怎么用了。

有人说输入不方便,我说你没用过snippet吧:

CGRect frame = (CGRect){
      .origin.x = <#x#>,
      .origin.y = <#y#>,
      .size.width =  <#width#>,
      .size.height = <#height#>
};

就这样,继续上班。哈哈。

  • Pingback: Klinik Raden Saleh Jakarta

  • Pingback: laptop mouse pad not working

  • Pingback: roqyachariyablog

  • Pingback: qqpokeronline

  • Pingback: adam eve promotion code

  • Pingback: Lil Will

  • heasenbug

    还可以跟简单一点:

    CGRect rect = {3.0,12.0,15.0, 80.0};

    CGRect frame = (CGRect){self.view.frame.origin,100,100}

    • heasenbug

      第一个写错了。
      CGRect rect = (CGRect){3.0,12.0,15.0, 80.0};

  • http://www.isaced.com/ isaced

    赞!

  • qiaoxueshi

    赞!

  • 员员

    我的惯性写法
    CGRect frame;
    frame.size.with = width;
    frame.size.height = height;
    frame.origin.x = x;
    frame.origin.y = y;

    另外问一下,snippet,这是个什么东西

    • answerhuang

      这样写不嫌烦?snippet这玩意儿就是你一直在用的代码片段,具体可以google:ios snippet,或者看这篇文章:http://www.cocoachina.com/applenews/devnews/2012/1203/5236.html

      • 员员

        thank you,又长见识了

  • 余书懿

    不错. 好一个 snippet

  • Master

    不觉得呀

  • http://www.iiiyu.com/ ChenYu Xiao

    已收藏snippet