码迷,mamicode.com
首页 > 其他好文 > 详细

Objective-C(杂记一)

时间:2014-12-25 14:23:22      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:

Block

1, 定义block(无参数,无返回值)

 

//第一种方法

^{
    NSLog(@"hello block!!!");
};


//第二种方法

(void) (^firstBlock)(void);

firstBlock = ^{
    NSLog(@"hello block!!!");
};

//第三种方法,其实第二种一样,只上直接给block赋值了

(void) (^firstBlock)(void) = ^{
    NSLog(@"hello block!!!");
};

 

2, 定义block(有参数,有返回值)

  

//第一种方法

^ (double a, double b) {
    return a + b;
};

//第二种方法

double (^addTwoVlaues)(double, double) = ^(double a, double b) {
       return a + b; 
};


//调用block

double result = addTwoVlaues(5, 10);

NSLog(@"result is %f", result);

  

3, block 可以访问外部变量

 

//第一种
- (void) testMethod() {
     int  value = 35;

     void (^testBlock) (void) = ^ {
           NSLog(@"value is: %i", value);
     }

     testBlock();
};

//output:  value is 35


//第二种
- (void) testMethod() {
     int  value = 35;

     void (^testBlock) (void) = ^ {
           NSLog(@"value is: %i", value);
     }

     value = 45;     

     testBlock();
};

//output:  value is 35
//如果在定义了block之后和调用之前,即使改变了外部变量的值,也不会对block产生影响

//如果想让blcok中甬道的变量值也改变,就需要标识为寄存器变量
//第三种
- (void) testMethod() {
    __block int  value = 35;//寄存器变量

     void (^testBlock) (void) = ^ {
           NSLog(@"value is: %i", value);
     }

     value = 45;     

     testBlock();
};

//output:  value is 45

  

4, block作为参数传递

//参数为callBackBlock
- (void)methodWithCallBackBlock: (void)(^)(void) callBackBlock;


//在方法内部使用参数callBackBlock
- (void)methodWithCallBackBlock: (void)(^)(void) callBackBlock {
    callBackBlock();
}

5. block typedef

typedef void( ^TypedefBlock)(void);

TypedefBlock typedefBlock= ^{
     NSLog(@"this is a typedef block");
};

  

Objective-C(杂记一)

标签:

原文地址:http://www.cnblogs.com/xiaolianghhd/p/4183945.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!