使用Block實(shí)現(xiàn)鏈?zhǔn)骄幊?/h1>

鏈?zhǔn)骄幊叹褪菍⒍鄠€(gè)方法的調(diào)用通過(guò).號(hào)鏈接成一句的代碼.便代碼更加緊湊,可讀性非常好狸吞,而且降低了代碼的重復(fù)讀,比如以下代碼

// 使用普通的方式給p對(duì)象的屬性賦值
Person *p = [Person new]; // 創(chuàng)建Person的實(shí)例對(duì)象

p.nameString = @"楊孝遠(yuǎn)";
p.ageString = @"18";
p.sexString = @"男";
p.favoriteDishString = @"烤鴨";

// 使用鏈?zhǔn)骄幊陶Z(yǔ)句給對(duì)象的成員變量賦值
NSArray *array = [NSObject makeAtts:^(Person *p) {
   
    p.name(@"楊孝遠(yuǎn)").age(@"18").sex(@"男").favoriteDish(@"烤鴨");

}];

通過(guò)這個(gè)例子可以簡(jiǎn)單看出,鏈?zhǔn)骄幊田L(fēng)格要有以下特點(diǎn)

1.通常是都是調(diào)用一個(gè)方法來(lái)給屬性賦值,本質(zhì)上該方法內(nèi)封裝了賦值的語(yǔ)句
2.方法返回值需要是block,block參數(shù):放需要操作的內(nèi)容火脉,block返回值:當(dāng)前類(lèi)對(duì)象

鏈?zhǔn)骄幊痰睦?/p>

優(yōu)點(diǎn):使用鏈?zhǔn)骄幊套钪饕暮锰幨强梢允勾a更簡(jiǎn)潔,寫(xiě)起來(lái)一種"爽快"感.設(shè)計(jì)優(yōu)秀的鏈?zhǔn)骄幊炭梢源蟠蠼档椭貜?fù)的代碼,增強(qiáng)邏輯感.
缺點(diǎn):對(duì)開(kāi)發(fā)者的業(yè)務(wù)邏輯能力要求較高,同時(shí)因?yàn)殒準(zhǔn)骄幊潭际钦{(diào)用函數(shù),所以有可能會(huì)造成過(guò)深的函數(shù)調(diào)用棧.稍微影響性能.

上面的例子實(shí)現(xiàn)過(guò)程:

自定義Person類(lèi)繼承自NSObject
Person.h文件

#import <Foundation/Foundation.h>
@interface Person : NSObject

@property (nonatomic, strong) NSMutableArray *att;

// 姓名
- (Person *(^)(NSString *))name;
@property (nonatomic, strong) NSString *nameString;

// 年齡
- (Person *(^)(NSString *))age;
@property (nonatomic, strong) NSString *ageString;

// 性別
- (Person *(^)(NSString *))sex;
@property (nonatomic, strong) NSString *sexString;

// 喜歡吃的菜
- (Person *(^)(NSString *))favoriteDish;
@property (nonatomic, strong) NSString *favoriteDishString;
@end

Person.m文件

#import "Person.h"

@implementation Person

// 初始化可變數(shù)組
- (NSMutableArray *)att {
    if (_att == nil) {
       _att = [NSMutableArray array];
    }
     return _att;
}
- (Person *(^)(NSString *))name {

    return ^(NSString *str){

        // 將外界傳來(lái)的姓名添加到數(shù)組中
        [self.att addObject:str];
        return self;
    };
}
@end

給NSObject添加一個(gè)分類(lèi)

#import <Foundation/Foundation.h>
@class Person;
@interface NSObject (Att)
+ (NSArray *)makeAtts:(void(^)(Person *p))attBlock;
@end

#import "NSObject+Att.h"
#import "Person.h"

@implementation NSObject (Att)

+ (NSArray *)makeAtts:(void (^)(Person *p))attBlock {

    Person *p = [Person new];

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

  • 序言:七十年代末臼寄,一起剝皮案震驚了整個(gè)濱河市培己,隨后出現(xiàn)的幾起案子镊辕,更是在濱河造成了極大的恐慌耿眉,老刑警劉巖靖秩,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件须眷,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡沟突,警方通過(guò)查閱死者的電腦和手機(jī)花颗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)惠拭,“玉大人扩劝,你說(shuō)我怎么就攤上這事≈案ǎ” “怎么了今野?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)罐农。 經(jīng)常有香客問(wèn)我条霜,道長(zhǎng),這世上最難降的妖魔是什么涵亏? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任宰睡,我火速辦了婚禮蒲凶,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘拆内。我一直安慰自己旋圆,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布麸恍。 她就那樣靜靜地躺著灵巧,像睡著了一般。 火紅的嫁衣襯著肌膚如雪抹沪。 梳的紋絲不亂的頭發(fā)上刻肄,一...
    開(kāi)封第一講書(shū)人閱讀 52,457評(píng)論 1 311
  • 那天,我揣著相機(jī)與錄音融欧,去河邊找鬼敏弃。 笑死,一個(gè)胖子當(dāng)著我的面吹牛噪馏,可吹牛的內(nèi)容都是我干的麦到。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼欠肾,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼瓶颠!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起刺桃,我...
    開(kāi)封第一講書(shū)人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤粹淋,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后虏肾,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體廓啊,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年封豪,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了谴轮。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡吹埠,死狀恐怖第步,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情缘琅,我是刑警寧澤粘都,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站刷袍,受9級(jí)特大地震影響翩隧,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜呻纹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一堆生、第九天 我趴在偏房一處隱蔽的房頂上張望专缠。 院中可真熱鬧,春花似錦淑仆、人聲如沸涝婉。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)墩弯。三九已至,卻和暖如春寞射,著一層夾襖步出監(jiān)牢的瞬間渔工,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工怠惶, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留涨缚,地道東北人轧粟。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓策治,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親兰吟。 傳聞我的和親對(duì)象是個(gè)殘疾皇子通惫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

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