黑马程序员-oc中简单的协议代理,通知广播,Block语句

来源:互联网 发布:网络刻章在线制作 编辑:程序博客网 时间:2024/06/06 04:01

------- android培训、java培训、期待与您交流! ----------


ios 中 protocol 代理 委托的理解


意义:代理委托给其他人做事

.h 在需要把数据传递出去的view进行协议的定义 比如 

1:@protocol  进行定义 
2:写入要实现的方法 changeMe:abc
3:用@property 进行属性的定义  比如 @property id<协议>delage;


.m   在这个适当的事件下去执行代理的命令  比如视图消失的时候
1:[self.delage changeMe:123];//实际上是给代理去做的事情 只是传递参数的命令


代理人:::::

1: 在.h的地方去做代理的实现接口 加上     <协议>;
2:在.m文件中设置对应的代理  [view delage]=self;
3:在.m文件中去实现具体方法 比如changeMe方法
ios中通知的用法
root在需要修改的视图 创建一条通知
[NSNoticationCenter defaultCenter]addObserver:self selector:@selector(chanlib:)name:@"mynoti" object:nil];
实现方法 
-(void)chanlib:(NSnotification*)noti
{
  id text=noti.object;
  UILabel *la=(UILabel *)[self.view viewWithTag:11];
  la.text=text;
}

model在需要数据传递时候的返回

[NSNoticationCenter defaultCenter]postNotificationName:@"mynoti" object:_text.text]; 
Block语句 


Block的申明
int (^myBlocks) (int)


Block的创建
myBlocks=^(int a){
    int result=a+a;
    return result;
}
Block的调用
int ret =myBlocks(10);


//知识点1 作为参数
typedef int (^myblock)(int);
myblock  block;
知识点2 引用变量
int number =20    //_block int number =20;  这样才可以用
myblock block=^(int a)
{
  number =30; //错误
  return 10;
}
内存管理 
分配内存在寨上、所以对象进去会retain  
加关键字_block  进里面将不在retain
0 0
原创粉丝点击