国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > iOS > 正文

iOS中的函數(shù)式編程和鏈?zhǔn)骄幊?/h1>
2019-11-06 10:04:47
字體:
供稿:網(wǎng)友

一、首先看Masonry經(jīng)典的代表性代碼塊

- (void)masDemo{

    //Masonry經(jīng)典的代表

    UIView *view = [[UIViewalloc]init];

    view.backgroundColor = [UIColorcyanColor];

    [self.viewaddSubview:view];

    [view mas_makeConstraints:^(MASConstraintMaker *make) {

        //1.函數(shù)式編程:通過‘()’去調(diào)用函數(shù),一般調(diào)用完返回的對(duì)象還是這個(gè)對(duì)象本身,就是函數(shù)式編程。

        //equalTo(...).offset(...)...().()

        //2.鏈?zhǔn)骄幊蹋和ㄟ^‘點(diǎn)’語法,將需要執(zhí)行的代碼塊連續(xù)的書寫下去的,就是鏈?zhǔn)骄幊獭?/p>

        //equalTo(self.view).offset(40)...

        make.top.equalTo(self.view).offset(40);

        make.size.mas_offset(CGSizeMake(100,100));

        make.centerX.equalTo(self.view).offset(-40);

    }];

}

二、函數(shù)調(diào)用的傳統(tǒng)寫法,兩個(gè)方法單獨(dú)調(diào)用,也不能隨意的組合順序。

@interface Person :NSObject

- (void)running;

- (void)eatSomething;

@end

@implementation Person

- (void)running{

    NSLog(@"%s",__FUNCTION__);

}

- (void)eatSomething{

    NSLog(@"%s",__FUNCTION__);

}

@end

   在ViewController調(diào)用Person類的時(shí)候

    Person *person = [Personnew];(以下省略Person對(duì)象的創(chuàng)建)

    [person running];

    [person eatSomething];

三、用‘[]’實(shí)現(xiàn)連續(xù)調(diào)用。runn和eat兩個(gè)方法如下:

- (Person *)runn;

- (Person *)eat;

此時(shí)方法實(shí)現(xiàn)中需要返回的是兩個(gè)對(duì)象本身

- (Person *)runn{

    NSLog(@"%s",__FUNCTION__);

   return self;

}

- (Person *)eat{

    NSLog(@"%s",__FUNCTION__);

    return self;

}

在調(diào)用的時(shí)候,需要使用‘[]’連續(xù)調(diào)用,此方法為鏈?zhǔn)骄幊?p style="margin-top:0px; margin-bottom:0px; line-height:normal; font-family:Menlo">   1‘  id obj1 = [person runn]; 

    [obj1 eat];

    id obj2 = [person eat];

    [obj2 runn];

  

    2’   [[person runn]eat];

四、用‘( )’實(shí)現(xiàn)函數(shù)式編程+ ‘ . ’形成鏈?zhǔn)骄幊蹋o參),用block實(shí)現(xiàn)

方法名如下:

//如果要實(shí)現(xiàn)函數(shù)式編程,需要返回‘block’

- (Person * (^)())runn2;

- (Person *(^)())eat2;

實(shí)現(xiàn)方法如下:

- (Person * (^)())runn2{

    NSLog(@"%s",__FUNCTION__);

    Person * (^runBlock)() = ^{

        NSLog(@"跑男");

        returnself;

    };

    return runBlock;

}

- (Person * (^)())eat2{

    NSLog(@"%s",__FUNCTION__);

    return ^{

        NSLog(@"吃2");

        returnself;

    };

}

在ViewController調(diào)用如下

person.runn2().runn2().eat2().eat2();

五、用‘( )’實(shí)現(xiàn)函數(shù)式編程 + ‘ . ’形成鏈?zhǔn)骄幊蹋◣ⅲ?用block實(shí)現(xiàn)

方法名如下

//返回block可以接參數(shù)

- (Person *(^)(NSString *food))eat3;

- (Person *(^)(double distance))run3;

方法的實(shí)現(xiàn)如下

- (Person *(^)(NSString *))eat3{

    return ^(NSString *food){

        NSLog(@"吃3%@",food);

        returnself;

    };

}

- (Person *(^)(double))run3{

    return ^(double distance){

        NSLog(@"跑3 %lf",distance);

        returnself;

    };

}

方法的調(diào)用如下

person.run3(1000).eat3(@"water").run3(10000).eat3(@"wind");

/*

 關(guān)于鏈?zhǔn)骄幊毯秃瘮?shù)式編程的進(jìn)一步理解

  1.自己封裝框架

  2.閱讀其他人的框架

 */


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

主站蜘蛛池模板: 阜平县| 汾西县| 聊城市| 平谷区| 宿松县| 阿勒泰市| 克东县| 祥云县| 津南区| 两当县| 色达县| 延川县| 尖扎县| 玉屏| 石阡县| 喜德县| 上栗县| 宁都县| 信阳市| 五台县| 金沙县| 满洲里市| 沿河| 北辰区| 伊金霍洛旗| 惠安县| 武胜县| 正宁县| 天镇县| 宝清县| 天祝| 赣榆县| 玉环县| 虎林市| 昌都县| 宜黄县| 江川县| 眉山市| 裕民县| 盘山县| 南投市|