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

block的知识点

时间:2014-12-17 00:21:51      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:style   ar   io   color   sp   for   on   div   2014   

//

//  main.m

//  1211块练习

//

//  Created by jerehedu on 14/12/11.

//  Copyright (c) 2014 jereh. All rights reserved.

//

 

#import <Foundation/Foundation.h>

 

int a=10;

 

int b=12;

 

 

int main(int argc, const char * argv[])

{

//    int __block c=19;

 

    @autoreleasepool {

        

        //block可以访问局部变量,但是不能修改

        //__block 块修改 关键字   不加的话无法在块内对c(局部变量)进行修改

        __block int  c=19;

        

        void (^nBlock)()=^{

            c+=9;

            NSLog(@"%i",c);

            

        };

        nBlock();

        

        //外部变量可以直接操作、修改

        void (^nmBlock)()=^{

            

            NSLog(@"%i",++a);

            

        };

        nmBlock();

        

        

        NSLog(@"%i,%i",a,b);

        

        //block保存一段代码,用花括号括起来

        //block标志是^

        /*block与函数比较

         1.可以保存代码

         2.有返回值

         3.有形参

         4.调用方式和C调用函数一样

         */

        

        

        //没有参数返回值的块

        void (^ myBlock)();

        myBlock=^{

            NSLog(@"没有参数返回值的块。");

        

        };

        //直接写完不会被执行,被保存起来了,需要调用

        //块的调用

        myBlock();

        

        //写在一起

        void(^ myblock)()=^{

            NSLog(@"没有参数返回值的块。");

        };

        myblock();

    

        //可以把块写在main的上面,则整个函数体内直接调用即可

//==========================================================

        //有参数返回值的 加法

        int (^ addBlock)(int,int)        =      ^(int a,int b){

            return a+b;  //此处括号内形参可以省略

        };

        NSLog(@"有参数返回值的 加法  %i",addBlock(1,2))  ;

        

        

        //通过block,打印出N条直线,N是调用块时传入

        void(^ lineBlock)(int)=^(int N){

            for (int i=0; i<N; i++) {

                NSLog(@"______________");

            }

        };

        lineBlock(5);

        

        //减法

        int (^ subBlock)(int,int)=^(int a,int b){

            return a-b;

        };

        NSLog(@"减法 %i",subBlock(23,12));

        

        

        //typedef  MyBlock代替int (^ MyBlock)(int,int)

        typedef int (^ MyBlock)(int,int);

        

        //乘法简化 MyBlock是类型,不能直接用来调用block,需要用变量名来调用

        

        MyBlock mulBlock=^(int a,int b){

            return a*b;

        };

        

        NSLog(@"乘积为: %i",mulBlock(1,2));

        

        //除法

        MyBlock divBlock=^(int a,int b){

            return a/b;

        };

        NSLog(@"商为: %i",divBlock(9,3));

        

        

        

        

        

        

        

    }

    

    return 0;

}

 

 

block的知识点

标签:style   ar   io   color   sp   for   on   div   2014   

原文地址:http://blog.csdn.net/ytuzhangziyao/article/details/41971481

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