美文网首页iOS开发iOS自学之路iOS高级
iOS之代码优雅法则之 GCC Code Block Eval

iOS之代码优雅法则之 GCC Code Block Eval

作者: Jamp_iOS | 来源:发表于2015-09-30 15:03 被阅读1953次

    前言

        最近代码量少, 遂在网上找各种资料学习代码的优雅之道.

    GCC Code Block Evaluation C Extension语法简介

        GCC Code Block Evaluation C Extension(以下简称GCC)语法十分优雅,它能够在局部初始UI以及处理逻辑,在团队协作中方便同事快速读懂你的UI布局.

    语法

    项目中的实践

      在实际码砖中,控制器 UI 在 viewDidLoad 方法中初始化. 学习GCC之前我的设置 UI 的方法是这样的:

    在viewDidLoad中调用UI的初始化方法
    初始化UI

      现在我打算通过这种方式设置UI: 重写UI属性的setter方法,然后在viewDidLoad 方法里面直接添加为self.view的shubview,具体实现方式如图.

    1.添加subview
    2.初始化norButton 3.初始化norImageView

    总结

      GCC布局UI,能够让代码变得更加干净,更加安全,更加简洁,能够在团队协作中发挥很大的作用.

    参考链接
    GCC Code Block Evaluation C Extension 

    相关文章

      网友评论

      • afecc2094551:简洁,以后就用这种风格了
      • 字节码:这个可以理解为函数式编程吗,Xcode7及以前我还经常偶尔用,关联代码比较集中,但是Xcode8我敲出来就报错了,现在不用了
      • 我叫阿水:我是今天看到别人的源码里有这样写,一瞬间有点懵。。。我就有一点不太理解,例如self.a =({a = init();.....; a;})代码块里最后这句a;是固定的写法吗 -- 是不是可以理解为return a回去 - - :joy:
        我叫阿水:@X_erath 在项目中有去尝试这样写,不过看着都怪怪的,还是不习惯:joy:
        fdf6e6855295:@KiBen 首先你要了解什么是GCC ,其实原理很简单 就是编译器编译代码块(用大括号括起来)后最后的结果,如果不写a,你说结果是什么。
      • 43bd89865d8c:确实很优雅,但是我在里面用宏定义会报错,怎么解决了?
        Jamp_iOS:@林梦兮 为什么要在里面定义宏咧,不太好吧 :grin:
      • 萌小菜:这也是一种格式吧....
      • Shelin:可以尝试改变一下,最近弄代码规范
      • RunningCoderLee:请教一下,用GCC Code Block Evaluation C Extension语法懒加载UI控件的时候是不是控件类型必须是strong,在weak下怎么写呢?
        Joyang:weak的话引用计数不增加,但是指针还是指向这块空间的,这块空间没有被引用就有被再次利用的风险,之所以可以正常执行,是因为恰巧没有被利用,这就是传说中的野指针呗,还是用Strong吧
        RunningCoderLee:@半个童钱
        那下面这种情况可以么(我声明成weak可以正常执行,只是会有警告提示)
        - (void)viewDidLoad {
        [super viewDidLoad];
        [self.view addSubview:self.webView];
        }
        - (UIWebView *)webView {
        if (!_webView) {
        _webView = ({
        UIWebView *webView = [[UIWebView alloc] init];
        webView.frame = self.view.bounds;
        [self.view addSubview:webView];
        webView;
        });
        }
        return _webView;
        }
        Jamp_iOS:@噬灵梦魇 不能用weak,这个时候用strong是没有问题的,
      • 风了个1:模块化更清晰了
      • 709b16930696:懒加载控件感觉更方便
      • keayou:学习了,以后就这样写
      • Seaboy灬:话说我都是这么写的,没想到居然还有这么高雅的名字。
      • tom510230:不是很好的做法,第一,根据MVC原则,在controller中写渲染代码是不合适的,第二,如果需要根据业务逻辑来区分同一个控件的不同表现,就肯定会出现业务代码和渲染代码混编的情况
        Jamp_iOS:@tom510230 是很好的的写法,可以根据实际需求来写啊,并不是无脑写,代码,要灵活,灵性
      • e1d5d9596e20:很不错,下次我也使用一下,多用就习惯了
      • 尘间:lazy init
      • 孙沪stupid:听君一席话,胜读十年书,👍👍👍
      • 叫我李五:我也觉得这种方法相对明了些,现在也开始这样写了~

      本文标题:iOS之代码优雅法则之 GCC Code Block Eval

      本文链接:https://www.haomeiwen.com/subject/ixeoxttx.html