iOS之編程思想

鏈式編程思想

鏈式編程思想:下一級的block給上一級使用編程

   思想:把須要作的事情封裝到block,給外接提供一個block方法框架

   特色:方法返回值須要是block。block參數:放須要操做的內容,block返回值:方法調用者。都是點語法。函數式編程

   表明:masonry框架函數

   http://my.oschina.net/u/2346786/blog/619655atom

massory:
[view mas_makeConstraints:^(MASConstraintMaker *make){
    make.left.top.equalTo(@10);
    make.right.bottom.equalTo(@(-10));
}

====================

void(^block)(MASConstraintMaker *make) = ^(MASConstraintMaker *make){
    make.left.top.equalTo(@10);
    make.right.bottom.equalTo(@(-10));
};
[view mas_makeConstraints:block];
//
//
//
//


計算器Demo:
#import <Foundation/Foundation.h>
@interface CaculatorMaker : NSObject
@property (assign, nonatomic) int reslut;

- (CaculatorMaker *(^)(int num))add;
- (CaculatorMaker *(^)(int num))multy;
@end

#import "CaculatorMaker.h"
@implementation CaculatorMaker

- (CaculatorMaker *(^)(int num))add
{
    return ^(int num){
      
        _reslut += num;
        
        return  self;
    };
}
- (CaculatorMaker *(^)(int num))multy
{
    return ^(int num){
      
        _reslut *= num;
        
        return self;
    };
}
@end

#import <Foundation/Foundation.h>
#import "CaculatorMaker.h"
@interface NSObject (Caculator)

//計算機都使用這個方法,一調用這個方法就返回結果
+ (int)makeCaculator:(void(^)(CaculatorMaker *))block;
@end

#import "NSObject+Caculator.h"
@implementation NSObject (Caculator)

+ (int)makeCaculator:(void(^)(CaculatorMaker *))block
{
    //建立計算對象
    CaculatorMaker *maker = [[CaculatorMaker alloc] init];
    
    //計算
    block(maker);
    return maker.reslut;
}
@end


- (void)viewDidLoad {
    [super viewDidLoad];
    
    int result = [NSObject makeCaculator:^(CaculatorMaker *maker) {
        
        //把全部的計算代碼封裝到這裏
        maker.add(10).add(20).multy(3);
    }];
    
    NSLog(@"%d",result);
}


響應式編程思想

原理:不須要考慮調用順序,只須要考慮結果,相似於蝴蝶效應,產生一個事件,會影響不少東西,這些事件像劉易陽的傳播出去,而後影響結果。
spa

表明:KVO的應用.net

http://my.oschina.net/u/2346786/admin/edit-blog?blog=538194code


函數式編程思想

特色:每一個方法必須有返回值(對象自己)。把函數或者Block當作參數.block參數(須要操做的值)block返回值(操做結果)orm

表明:ReactiveCocoa對象

http://my.oschina.net/u/2346786/blog/614316

相關文章
相關標籤/搜索