首页 > 代码库 > 浅谈Objective-C对象初始化的三类程序猿

浅谈Objective-C对象初始化的三类程序猿

技术分享

 

早上看了位仁兄写了《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 }

 

总结

总结个鬼,就几行代码。爱干啥,干啥去~~ 下班闪人~ 白了个掰!

 

浅谈Objective-C对象初始化的三类程序猿