码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2016-09-26 21:42:33      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:

技术分享

 

早上看了位仁兄写了《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对象初始化的三类程序猿

标签:

原文地址:http://www.cnblogs.com/kim4apple/p/5910495.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!