您的位置:首页 > 其它

OC基础之 ---------- block / 代理模式 ,协议 /

2015-11-01 08:41 316 查看
block:oc的一种变量,在程序运行时使用

block的作用: 保存代码  / 可以有返回值 /有形餐

block 标志 : ^

//  无参 ,无返回值的block

  void (^myblock) ()= ^ {

            NSLog(@"这是一个简单的block块");

        };      

//有参有返回值的block

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

            return (a + b);

        };

  int a =   myblock1(4,5);

      

 //有参无返回值的block

void (^myblock1)(int) = ^(int n){

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

                NSLog(@" ------------ ");

            }

                    };

       myblock1(4);

void : 返回类型

(^mrblock) :block的名称

  () : 里面是参数

2 >使用typedef 定义一个类型名称

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

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

            return a+b;

        };

      int a = block(1,2);

block总结:

1》如何定义一个block

int  (^myblock)(int) ;

void (^mablock)();

2> 如何利用block来封装代码

^(int a ,int b){

returan  a - b;

};

3>block访问外部变量

 block内部可以访问外面的变量

 默认情况下,block内部不能修改外面的局部变量

 给局部变量加上_block关键字,这个局部变量可以在block内部进行修改

4》使用typedef 定义一个类型名称

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

// 以后就可以使用MyBlock这种类型来定义block变量

MyBlock block;

MyBlock   b1 ,b2 ;

b1 = ^ (int a ,int b){

return a + b;

}

代理  --- 协议

1.协议的定义

@protocol 协议名称 <nsobject>

//  方法生命列表。。。。。。

@end

2》定义一个变量的时候,限制这个变量保存的对象遵守某个协议

类名 <协议名称> *变量名 ;

id <协议名称> *变量名 ;

nsobject <myprotocol>  *obj;

id <myprotocol>  obj1;

3>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: