iOS:用Block寫一個鏈式編程

來源:互聯網
上載者:User

標籤:寫法   import   類型   nsstring   它的   self   man   ogr   interface   

一、介紹

  鏈式編程是一個比較新穎的編程方式,簡單直觀,用起來也比較舒服。目前比較有名的Mansory和BabyBlueTooth就是使用鏈式編程寫的第三方架構。

 

二、寫法

  鏈式編程寫法不同於傳統方式,初次寫起來比較彆扭,但是一旦習慣了,用起來比較得心應手。那麼,如何寫呢?其實就是一個對象調用它的執行個體方法後返回一個block(已經定義過),而這個block內部又返回該對象。依此類推,該對象不論調用多少個它的執行個體方法,最終都會返回該對象本身。

 

三、執行個體

LearnManager類定義和實現

////  LearnManager.h//  ChainProgramming////  Created by 夏遠全 on 2017/9/30.//  Copyright ? 2017年 夏遠全. All rights reserved.#import <Foundation/Foundation.h>/** 定義block,傳回值類型是LearnManager對象 */@class LearnManager;typedef LearnManager *(^LearnChineseBlock)(NSString *chineseName);typedef LearnManager *(^LearnEnglishBlock)(NSString *englishName);typedef LearnManager *(^LearnFranchBlock) (NSString *franchName);@interface LearnManager : NSObject/** 定義對象方法 @return 傳回值是定義過的block */-(LearnChineseBlock)learnChinese;-(LearnEnglishBlock)learnEnglish;-(LearnFranchBlock)learnFranch;@end
////  LearnManager.m//  ChainProgramming//  Created by 夏遠全 on 2017/9/30.//  Copyright ? 2017年 夏遠全. All rights reserved.#import "LearnManager.h"@implementation LearnManager-(LearnChineseBlock)learnChinese{        //外部返回一個block    return ^LearnManager *(NSString *chineseName){                NSLog(@"%@", [NSString stringWithFormat:@"學習%@!",chineseName]);                //內部block返回一個LearnManager對象        return self;    };}-(LearnEnglishBlock)learnEnglish{        //外部返回一個block    return ^LearnManager *(NSString *englishName){                NSLog(@"%@", [NSString stringWithFormat:@"學習%@!",englishName]);                //內部block返回一個LearnManager對象        return self;    };}-(LearnFranchBlock)learnFranch{        //外部返回一個block    return ^LearnManager *(NSString *franchName){                NSLog(@"%@", [NSString stringWithFormat:@"學習%@!",franchName]);                //內部block返回一個LearnManager對象        return self;    };}@end

ViewController類匯入並調用

////  ViewController.m//  ChainProgramming////  Created by 夏遠全 on 2017/9/30.//  Copyright ? 2017年 夏遠全. All rights reserved.//#import "ViewController.h"#import "LearnManager.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad {    [super viewDidLoad];        LearnManager *learn = [[LearnManager alloc] init];

//learn對象首先調用方法返回一個block,然後給block傳入字串參數並調用,於是又返回了該對象learn本身 learn.learnChinese(@"語文").learnEnglish(@"英語").learnFranch(@"法語");}@end

 

四、列印

2017-09-30 18:41:10.288 ChainProgramming[92884:3768713] 學習語文!2017-09-30 18:41:10.288 ChainProgramming[92884:3768713] 學習英語!2017-09-30 18:41:10.289 ChainProgramming[92884:3768713] 學習法語!

 

iOS:用Block寫一個鏈式編程

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.