一、首先看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ù)式編程,需要返回‘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();
//返回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.閱讀其他人的框架
*/
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注