一、普通程式猿
普通程式設計師使用最常見路人姿勢等場。普普通通,純屬陸仁輩。
陸仁賈寫法:
// view 1 UIView *v1 = [UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 100)]; v1.backgroundColor = [UIColor whiteColor]; // view 2 UIView *v2 = [UIView alloc] initWithFrame:CGRectMake(0, 120, 200, 100)]; v2.backgroundColor = [UIColor whiteColor]; // add to view [self.view addSubview:v1]; [self.view addSubview:v2];
擼人已寫法:擼人已明顯比陸仁賈聰明多了。使用大括號隔離,view1與view2相互獨立,建立程式碼變數不會相互汙染。
// view 1 { UIView *v1 = nil; UIView *v = [UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 100)]; v.backgroundColor = [UIColor whiteColor]; v1 = v; [self.view addSubview:v1]; } // view 2 { UIView *v2 = nil; UIView *v = [UIView alloc] initWithFrame:CGRectMake(0, 120, 200, 100)]; v.backgroundColor = [UIColor whiteColor]; v2 = v; [self.view addSubview:v2]; }
路人餅寫法
// view 1 UIView *v1 = nil; { UIView *v = [UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 100)]; v.backgroundColor = [UIColor whiteColor]; v1 = v; } // view 2 UIView *v2 = nil; { UIView *v = [UIView alloc] initWithFrame:CGRectMake(0, 120, 200, 100)]; v.backgroundColor = [UIColor whiteColor]; v2 = v; } [self.view addSubview:v1]; [self.view addSubview:v2];
二、文藝程式猿
文藝程式猿,使用教科書姿勢登場。使用builder模式。使用block隔離初始化程式碼。
首先給NSObject增加擴充套件介面
// 擴充套件NSObject,增加Builder介面 @interface NSObject (Builder) + (id)z0_builder:(void(^)(id that))block; - (id)z0_builder:(void(^)(id that))block; @end
// 實現 @implementation NSObject (Builder) + (id)z0_builder:(void(^)(id))block { id instance = [[self alloc] init]; block(instance); return instance; } - (id)z0_builder:(void(^)(id))block { block(self); return self; } @end
使用。程式碼簡潔工整。處處都是文藝範。
- (void) foo { // 使用 // view 1 UIView *v1 = [UIView z0_builder:^(UIView *that) { that.frame = CGRectMake(0, 0, 320, 200); that.background = [UIColor whiteColor]; }]; // view 2 UIView *v2 = [[UIView alloc] init]; [v2 z0_builder:^(UIView *that) { that.frame = CGRectMake(0, 0, 320, 200); that.background = [UIColor whiteColor]; }]; // 新增到父檢視 [self.view addSubview:v1]; [self.view addSubview:v2]; }
三、二逼程式猿
最後入場的是二逼程式猿。
!#!@#@%&……&%&#¥%!@#¥!@#¥!!!!! 這個是什麼卵?
其實....我也不知道!>_<# 自行領悟。
黑科技?????呵呵~~ 我就是程式碼少,你吹啊~~
- (void) foo { // view 1 UIView *v1 = ({ UIView *v = [UIView alloc] init]; v.frame = CGRectMake(0, 0, 320, 200); v.background = [UIColor whiteColor]; v; }); // view2 UIView *v2 = ({ UIView *v = [UIView alloc] init]; v.frame = CGRectMake(0, 120, 320, 200); v.background = [UIColor blueColor]; v; }); [self.view addSubview:v1]; [self.view addSubview:v2]; }