2020-12-19

Mac创建txt文件
touch cjl.txt

通知代理和闭包的区别

  • NotificationCenter 通知中心:“一对多”,在APP中,很多控制器都需要知道一个事件,应该用通知;

  • delegate 代理委托:“一对一”,对同一个协议,一个对象只能设置一个代理delegate,所以单例对象就不能用代理;代理更注重过程信息的传输:比如发起一个网络请求,可能想要知道此时请求是否已经开始、是否收到了数据、数据是否已经接受完成、数据接收失败

  • block(闭包) block和delegate一样,一般都是“一对一”之间通信交互,相比代理block有以下特点
    1.写法更简练,不需要写protocol、函数等等
    2.block注重结果的传输:比如对于一个事件,只想知道成功或者失败,并不需要知道进行了多少或者额外的一些信息
    3.block需要注意防止循环引用

  1. a.delegate运行成本低。block成本很高的.b.block出栈需要将使用的数据从栈内存拷贝到堆内存,当然对象的话就是加计数,使用完或者block置nil后才消除;delegate只是保存了一个对象指针,直接回调,没有额外消耗。相对C的函数指针,只多做了一个查表动作

2.公共接口,方法较多也选择用delegate进行解耦,iOS有很多例子比如最常用tableViewDelegate,textViewDelegate;

异步和简单的回调用block更好,iOS有很多例子比如常用的网络库AFNetwork,ASIHTTP库,UIAlertView类。
——————————————————————————————————————————————

本机的ip地址是127.0.0.1

socket =ip + 端口号

服务器端有两个socket。 一个是监听socket 另一个是通信socket
——————————————————————————————————————————————

@synchronized() 这个主要是考虑多线程的程序,这个指令可以将{ } 内的代码限制在一个线程执行,如果当前线程没有执行完,其他的线程需要执行就得等着。
@synchronized 的作用是创建一个互斥锁,保证此时没有其它线程对self对象进行修改。这个是objective-c的一个锁定令牌,防止self对象在同一时间内被其它线程访问,起到线程的保护作用。 一般在公用变量的时候使用,如单例模式或者操作类的static变量中使用。
指令@synchronized()需要一个参数。该参数可以使任何的Objective-C对象,包括self。这个对象就是互斥信号量。他能够让一个线程对一段代码进行保护,避免别的线程执行该段代码。针对程序中的不同的关键代码段,我们应该分别使用不同的信号量。只有在应用程序编程执行多线程之前就创建好所有需要的互斥信号量对象来避免线程间的竞争才是最安全的。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值