标签:
序
早上看了位仁兄写了《Swift:让人眼前一亮的初始化方式》的文章。什么?!初始化?Objective-C!好吧,吓哔哔~~~
一、普通程序猿
普通程序员使用最常见路人姿势等场。普普通通,纯属陆仁贾。
1 UIView *v = [UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 100)]; 2 v.backgroundColor = [UIColor whiteColor];
文艺程序猿,使用教科书姿势登场。使用builder模式。
首先给NSObject增加扩展接口
1 // 扩展NSObject,增加Builder接口 2 @interface NSObject (Builder) 3 4 + (id)z0_builder:(void(^)(id that))block; 5 6 - (id)z0_builder:(void(^)(id that))block; 7 8 @end 9 10 // 实现 11 @implementation NSObject (Builder) 12 13 + (id)z0_builder:(void(^)(id))block { 14 id instance = [[self alloc] init]; 15 block(instance); 16 return instance; 17 } 18 19 - (id)z0_builder:(void(^)(id))block { 20 block(self); 21 return self; 22 } 23 24 @end
使用
1 - (void) foo { 2 // 使用 3 UIView *v1 = [UIView z0_builder:^(UIView *that) { 4 that.frame = CGRectMake(0, 0, 320, 200); 5 that.background = [UIColor whiteColor]; 6 }]; 7 8 UIView *v2 = [[UIView alloc] init]; 9 [v2 z0_builder:^(UIView *that) { 10 that.frame = CGRectMake(0, 0, 320, 200); 11 that.background = [UIColor whiteColor]; 12 }]; 13 }
最后入场的是二逼程序猿。!#!@#@%&……&%&#¥%!@#¥!@#¥!!!!! 这个是什么卵?
其实....我也不知道!>_<# 自行领悟。
1 - (void) foo { 2 UIView *v = ({ 3 UIView *v = [UIView alloc] init]; 4 v.frame = CGRectMake(0, 0, 320, 200); 5 v.background = [UIColor whiteColor]; 6 v; 7 }); 8 }
总结个鬼,就几行代码。爱干啥,干啥去~~ 下班闪人~ 白了个掰!
标签:
原文地址:http://www.cnblogs.com/kim4apple/p/5910495.html