Objective-C ブロック構文の基本的な使い方

ViewController.m

#import "ViewController.h"


@interface ViewController ()


@property (weak, nonatomic) IBOutlet UILabel *lbString;


@end


@implementation ViewController


- (void)viewDidLoad

{

    [super viewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

    

}


- (void)didReceiveMemoryWarning

{

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}


//

- (IBAction)doTest:(id)sender {

    

    /*

     構文:

     戻り値の型 (^名前)(引数の型, 引数の型, ...) = 

      ^(引数1の定義,引数2の定義, ...) { 処理 };

    */

    

    // パターン1 ブロック機構(ただの変数として認識)

    // 戻り値 引数

    void (^func01)(void) = ^(void) {

        

        NSLog(@"Hello!");

        

    };

    

    // パターン2 引数1個

    // 戻り値 引数

    void (^func02)(int) = ^(int arg01) {

        

        NSLog(@"消費税は%d%%", arg01);

    };

    

    // パターン3

    //

    void(^fun03)(NSString *) = ^(NSString  *arg02) {

        

        NSLog(@"%@", arg02);

    };

    

    // パターン4

    int (^fun04)(int, int) = ^(int arg01, int arg02) {

        

        return arg01 + arg02;


    };

    

    // パターン5

    int num00 = 100;

    

    int (^fun05)(int) = ^(int arg01) {

        

        return arg01 * num00;

    };

    

    // パターン1 使用

    func01();

    

    // パターン2 使用 消費税

    func02(8);

    

    // パターン3 使用 あいうえお

    fun03(@"あいうえお");

    

    // パターン4 使用 11

    int ret04 = fun04(10, 1);

    NSLog(@"%d", ret04);

    

    // パターン5 使用 300

    int ret05 = fun05(3);

    NSLog(@"%d", ret05);


}


// パターン1 ブロック機構(ただの変数として認識)

- (IBAction)proc01:(id)sender {

    

    /*

     構文:

     戻り値の型 (^名前)(引数の型, 引数の型, ...) =

     ^(引数1の定義,引数2の定義, ...) { 処理 };

     */

    

    // パターン1 ブロック機構(ただの変数として認識)

    // 戻り値 引数

    void (^func01)(void) = ^(void) {

        

        NSLog(@"Hello!");

        self.lbString.text = @"Hello!";

    };

    

    // パターン1 使用

    func01();


}


// パターン2 使用 消費税

- (IBAction)proc02:(id)sender {

    

    // パターン2 引数1個

    // 戻り値 引数

    void (^func02)(int) = ^(int arg01) {

        

        NSLog(@"消費税は%d%%", arg01);

        self.lbString.text = [NSString stringWithFormat:@"消費税は%d%%", arg01];

    };

    

    // パターン2 使用 消費税

    func02(8);

}


// パターン3 fun03(@"あいうえお");

- (IBAction)proc03:(id)sender {

    

    // パターン3

    //

    void(^fun03)(NSString *) = ^(NSString  *arg02) {

        

        NSLog(@"%@", arg02);

        self.lbString.text = [NSString stringWithFormat:@"%@",arg02];

    };

    

    // パターン3 使用 あいうえお

    fun03(@"あいうえお");

    

}


// パターン4 A + B = C

- (IBAction)proc04:(id)sender {

    

    // パターン4

    int (^fun04)(int, int) = ^(int arg01, int arg02) {

        

        return arg01 + arg02;

    };

    

    // パターン4 使用 11

    int ret04 = fun04(10, 1);

    NSLog(@"%d", ret04);

    self.lbString.text = [NSString stringWithFormat:@"%d",ret04];

    

}


// パターン5 A * B = C

- (IBAction)proc05:(id)sender {

    

    // パターン5

    int num00 = 100;

    

    int (^fun05)(int) = ^(int arg01) {

        

        return arg01 * num00;

    };

    

    // パターン5 使用 300

    int ret05 = fun05(3);

    NSLog(@"%d", ret05);

    self.lbString.text = [NSString stringWithFormat:@"%d",ret05];

}


@end

GitHub Blocks

  

目 次