剛開始接觸鏈?zhǔn)秸Z法是JS缕溉,如果用JS寫UIView的初始化,大概是這樣的UIView.alloc().init();
而我們寫的語言并不是JS底桂,而是OC湖苞,那么又怎么像JS一樣的運(yùn)用鏈?zhǔn)秸Z法來進(jìn)行編程呢烹吵?廢話不多說碉熄,直接擼代碼:
1. 首先我們自己創(chuàng)建UIView一個(gè)擴(kuò)展,名字叫做ChainView:
2.我們自己定義UIView的初始化方法:
.h中:
.m中:[self new] 等同于 [[self alloc] init];
3.我們通過屬性的方法通過block每次將當(dāng)前的對(duì)象返回肋拔,從而來實(shí)現(xiàn)下一次的調(diào)用具被,形成鏈?zhǔn)降慕Y(jié)構(gòu):
.h中:
.m中:
4.我們嘗試調(diào)用一下:
首先引用我們創(chuàng)建的"UIView+ChainView",然后我們書寫一下:
沒有問題只损,編譯器沒有報(bào)錯(cuò),然后我們打個(gè)斷點(diǎn)運(yùn)行一下:
我們發(fā)現(xiàn)輸出結(jié)果跟我設(shè)置的是一樣的七咧。點(diǎn)擊繼續(xù)跃惫,查看一下屏幕上的輸出:
完工!
通過這個(gè)例子我們實(shí)現(xiàn)了最簡(jiǎn)單的鏈?zhǔn)骄幊贪啊S信d趣的同學(xué)爆存,可以自己寫寫UIButton,UILabel等等來試試蝗砾。
補(bǔ)充一下:鏈?zhǔn)秸Z法聲明的另一種方式先较,實(shí)現(xiàn)是一樣的:
參考資料:Masonry? ?BabyBluetooth