高逼格的block(鏈式程式設計思想 )

2021-07-16 16:47:05 字數 1730 閱讀 4265

鏈式程式設計思想:或許剛接觸這個東西,你說滿臉懵逼的狀態,那麼下面來看一下典型的鏈式程式設計思想的用法:

// 建立控制項

uiview *redview = [[uiview alloc] init];

redview.backgroundcolor = [uicolor redcolor];

[self.view addsubview:redview];

// 設定控制項的約束

[redview mas_makeconstraints:^(masconstraintmaker *make) ];

認識的人一眼就明白這就是

的用法啊!

你知道怎麼用?你知道實現原理麼?(知道的大牛就不用往下看了,不知道的你可以往下看,謝謝你給我裝逼的機會)

首先,給所有uiview提供乙個設定約束的方法makeconstraints

makeconstraints的實現方法:

1.建立約束製造者,約束製造者提供了很多設定約束的方法,每個製造約束(equalto)的方法,方法不需要引數,但是必須返回block,每個block需要傳入乙個引數,計算值。

2.把約束製造者傳入block中,block用於把所有的約束儲存到約束製造者中。

然後,執行block。

最後,利用約束製造者給view一次性新增所有約束。

例子中實現的是redview距離螢幕邊距 10。

如果你還是懵逼狀態:那麼我給你總結一句話:

鏈式程式設計思想原理:是將多個操作(多行**)通過點號(.)鏈結在一起成為一句**,使**可讀性好,

鏈式程式設計特點:方法的返回值是block,block必須有返回值(本身物件),block引數(需要操作的值)

而masonry就是很好的利用了這一思想封裝的很好的第三方開源庫的應用例項之一。

1.首先常規實現用法:

.h檔案傳遞乙個引數相加。

#import

@inte***ce calculatormanager : nsobject

/** 結果值*/

@property(assign, nonatomic) int result;

-(void)add:(int)value;

@end

.m檔案實現:

#import "calculatormanager.h"

@implementation

calculatormanager

-(void)add:(int)value

@end

外部呼叫的時候:

-(void)viewdidload

2.改進用法:

在.h檔案中讓讓返回自身self,然後在外部呼叫的時候:

- (void)viewdidload

這麼寫,**減少了不少,但是感覺有點不舒服,那麼用鏈式程式設計思想的話就有意思了:

3.乙個返回值為calculatormanager instance的block**塊:

-(calculatormanager *(^)(int))add;}

外部實現:這有點裝逼的樣子了:

- (void)viewdidload

如果,如果你還沒明白的話 ,或許跟我剛開始是一樣的 對於這種程式設計的思想是懵逼的,給自己點時間,先記住這種用法,慢慢的你會接受這種思想的!

高逼格UILabel的閃爍動畫效果

高逼格uilabel的閃爍動畫效果 最終效果圖如下 原始碼 yxlabel.h 與 yxlabel.m created by youxianming on 14 8 23.import inte ce yxlabel uiview property nonatomic,strong nsstring...

高逼格UILabel的閃爍動畫效果

高逼格uilabel的閃爍動畫效果 最終效果圖如下 原始碼 yxlabel.h 與 yxlabel.m yxlabel.h created by youxianming on 14 8 23.import inte ce yxlabel uiview property nonatomic,stron...

今天我們來寫高逼格的if else

一 實況概述 對於多種判斷,在 中遇到的情況太多了,今天我們拿管理員許可權舉個?一般來說我們正常的後台管理系統都有所謂的角色概念,不同管理員許可權是不一樣的,能夠行使的操作也不一樣 乙個使用者登陸進來,我們根據使用者不同角色來判斷哪些行為 強行 一波 這種是最順手的,只要手夠快,腦子都跟不上 也是平...