iOS鏈?zhǔn)骄幊虒W(xué)習(xí)筆記

概念:像這樣top.equalTo(self.view).offset(60)通過”點”語法,將需要執(zhí)行的代碼塊連續(xù)的書寫下去,就是鏈?zhǔn)骄幊?它能使代碼簡單易讀,書寫方便。

原理:保證每個方法執(zhí)行之后,都返回對象本身,然后對象本身通過點語法再調(diào)用別的方法,以此實現(xiàn)鏈?zhǔn)綀?zhí)行。點語法其實是oc中取屬性的一種語法。oc中比較神奇的一點是,即使沒有屬性,只有方法,點語法也可以把一個方法當(dāng)做getter 方法來用,可以點式調(diào)用,像 property 一樣。

代碼:

@interface Test : NSObject

-(Test *)run;

-(Test * (^)(NSString *))testPrint;

@end

@implementation Test

-(Test *)run {

    NSLog(@"----------------run-------------------");

    return self;

}

-(Test * (^)(NSString *))testPrint {

    return ^(NSString * str){

        NSLog(@"----------------%@-------------------",str);

        return self;

    };

}

@end

Test *t = [[Test alloc]init];

    t.run;

    t.testPrint(@"000000000");

    [t testPrint](@"3333333333333");

    t.run.testPrint(@"1111111111");

    [t run].testPrint(@"22222222222");

    [[t run] testPrint](@"3333333333333");

t.run很好理解,直接調(diào)用了getter方法。-(Test *)run。而且返回了self對象。

t.testPrint(@"000000000"); 其實應(yīng)該這樣理解:t.testPrint (@"000000000")

t.testPrint 調(diào)用了getter方法,-(Test * (^)(NSString *))testPrint 返回了一個block。block后邊加上帶參數(shù)的括號,執(zhí)行這個block,最后block執(zhí)行完成之后返回了self對象。

這兩點理解之后,下邊的幾個調(diào)用原理也就顯而易見了。

總結(jié):ios中鏈?zhǔn)骄幊淌抢命c語法實現(xiàn)的,在實際應(yīng)用中,如果方法需要傳參數(shù),那么就可以用block的getter方法,如果不需要傳參,就像例子中的run方法,可以不用block。具體怎么實現(xiàn)要看需求。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容