利用加法計(jì)算器學(xué)習(xí)一下鏈?zhǔn)骄幊趟枷?/h1>

關(guān)于鏈?zhǔn)骄幊滔氡卮蠹业谝粋€(gè)想到的就是 Masonry , 至于還不知道鏈?zhǔn)骄幊痰耐? 請(qǐng)自行百度~

在寫之前, 我們先看看以下幾點(diǎn):

/**
 * 鏈?zhǔn)骄幊趟枷胩攸c(diǎn): 方法返回值必須是方法調(diào)用者本身
 * 用到 block: 把需要操作的的值作為 block 參數(shù), block 也需要返回值, 就是方法調(diào)用者
 * 方法設(shè)計(jì): 自己的框架最好添加一個(gè)屬于自己的獨(dú)特前綴
 */

注意了這幾點(diǎn)我們就可以開(kāi)始仿照 Masonry 來(lái)學(xué)習(xí)!

首先我們來(lái)看看 Masonry 的使用, 特殊情況我沒(méi)有把視圖添加到父視圖上, 只是為了看清寫法

Masonry 的使用
內(nèi)部實(shí)現(xiàn)

它在內(nèi)部創(chuàng)建了一個(gè)約束制造者, 然后用 block 接收外部的約束信息, 返回了一個(gè)含有約束的數(shù)組, 我們也可以這樣, 把所有計(jì)算代碼寫在外面用 block 傳進(jìn)來(lái), 作用在一個(gè)計(jì)算機(jī)管理者 manager 上, 我們對(duì)計(jì)算器需要返回的就不是數(shù)組了, 而是一個(gè)int或者float
還有看名字它是一個(gè)類目, 至于那個(gè) MAS_VIEW 就是作者裝逼用的, 就是對(duì) UIView 寫了一個(gè)宏

.h

#import <Foundation/Foundation.h>
#import "ZWYCalculateManager.h"

@interface NSObject (Calculate)

// 把所有的計(jì)算代碼放在這里
+ (float)zwy_makeCalculate:(void(^)(ZWYCalculateManager *))block;

@end

創(chuàng)建一個(gè)管理者manager, import 到這個(gè)類目中

.m

#import "NSObject+Calculate.h"

@implementation NSObject (Calculate)

+ (float)zwy_makeCalculate:(void (^)(ZWYCalculateManager *))block
{
    ZWYCalculateManager *manager = [ZWYCalculateManager new];
    block(manager);
    return manager.result;
}

@end

是不是和 Masonry 很像, 這里我們使用類方法, 是因?yàn)椴恍枰獙?duì)象調(diào)用, 根據(jù)使用者的需求去改就可以, 也可以寫成對(duì)象方法

再來(lái)寫一下我們的管理者

.h

#import <Foundation/Foundation.h>

@interface ZWYCalculateManager : NSObject

@property (nonatomic, assign) float result;

// 下面的創(chuàng)建我們不使用, 因?yàn)檫_(dá)不到鏈?zhǔn)骄幊痰臉幼? 我們需要的是 manager.add(5).add(5) 這樣的鏈?zhǔn)骄幊? 所以需要寫成 block
//- (instancetype)add:(float)value;

// 注意 block 的返回值, 要是方法調(diào)用者本身
- (ZWYCalculateManager *(^)(float))add;

@end

.m

#import "ZWYCalculateManager.h"

@implementation ZWYCalculateManager

- (ZWYCalculateManager *(^)(float))add
{
    return ^(float value) {
        _result += value;
        return self;
    };
}

@end

這樣我們就寫完了, 可以去 viewController 中使用一下了:

int result = [NSObject zwy_makeCalculate:^(ZWYCalculateManager *manager) {
        // 例如計(jì)算 5 + 5
        manager.add(5).add(5);
    }];
    
NSLog(@"%d", result);

看圖

運(yùn)行后的圖

最后, 筆者只是分享思想, 有想要完善加減乘除的客官, 請(qǐng)客官們自行解決~~一定要善于思考!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者

  • 序言:七十年代末酸舍,一起剝皮案震驚了整個(gè)濱河市使兔,隨后出現(xiàn)的幾起案子代虾,更是在濱河造成了極大的恐慌籍嘹,老刑警劉巖噪矛,帶你破解...
    沈念sama閱讀 219,110評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件挡鞍,死亡現(xiàn)場(chǎng)離奇詭異兽间,居然都是意外死亡暂殖,警方通過(guò)查閱死者的電腦和手機(jī)价匠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)呛每,“玉大人踩窖,你說(shuō)我怎么就攤上這事〕亢幔” “怎么了洋腮?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,474評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)手形。 經(jīng)常有香客問(wèn)我啥供,道長(zhǎng),這世上最難降的妖魔是什么库糠? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,881評(píng)論 1 295
  • 正文 為了忘掉前任滤灯,我火速辦了婚禮,結(jié)果婚禮上曼玩,老公的妹妹穿的比我還像新娘。我一直安慰自己窒百,他們只是感情好黍判,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著篙梢,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上凡简,一...
    開(kāi)封第一講書(shū)人閱讀 51,698評(píng)論 1 305
  • 那天因俐,我揣著相機(jī)與錄音,去河邊找鬼妄呕。 笑死陶舞,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的绪励。 我是一名探鬼主播肿孵,決...
    沈念sama閱讀 40,418評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼唠粥,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了停做?” 一聲冷哼從身側(cè)響起晤愧,我...
    開(kāi)封第一講書(shū)人閱讀 39,332評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蛉腌,沒(méi)想到半個(gè)月后官份,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,796評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡烙丛,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評(píng)論 3 337
  • 正文 我和宋清朗相戀三年舅巷,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蜀变。...
    茶點(diǎn)故事閱讀 40,110評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡悄谐,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出库北,到底是詐尸還是另有隱情爬舰,我是刑警寧澤,帶...
    沈念sama閱讀 35,792評(píng)論 5 346
  • 正文 年R本政府宣布寒瓦,位于F島的核電站情屹,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏杂腰。R本人自食惡果不足惜垃你,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望喂很。 院中可真熱鬧惜颇,春花似錦、人聲如沸少辣。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,003評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)漓帅。三九已至锨亏,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間忙干,已是汗流浹背器予。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,130評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留捐迫,地道東北人乾翔。 一個(gè)月前我還...
    沈念sama閱讀 48,348評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像施戴,于是被迫代替她去往敵國(guó)和親末融。 傳聞我的和親對(duì)象是個(gè)殘疾皇子钧惧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Masonry是iOS在控件布局中經(jīng)常使用的一個(gè)輕量級(jí)框架,Masonry讓NSLayoutConstraint使...
    丘比沙拉閱讀 3,181評(píng)論 2 19
  • Masonry是iOS在控件布局中經(jīng)常使用的一個(gè)輕量級(jí)框架勾习,Masonry讓NSLayoutConstraint使...
    愛(ài)敲代碼的果果閱讀 1,884評(píng)論 0 2
  • 2020年 今天是新年的第一天也是自己的本命年浓瞪,不管做什么事情。只有認(rèn)真巧婶,才會(huì)成功乾颁。付出總會(huì)有收獲。 只有努力才能...
    ok198612閱讀 51評(píng)論 0 0
  • 小寶摸摸我的臉說(shuō)艺栈,媽媽英岭,你的臉好干啊湿右!一摸就卡頓了诅妹!我的臉就不會(huì)! 好吧毅人!我承認(rèn)你的這個(gè)詞借用得很恰當(dāng)吭狡。 下午,小...
    錦瑟_db50閱讀 127評(píng)論 0 0