关于协议(protocol)、代理(delegate)、block、通知(NSNotification)、KVO

协议和代理:
①协议是一个方法列表,并且里面的方法多少是相关的
②协议中声明的方法默认是必须实现的,@required 当然还有选择实现的 @optional
③协议通常和代理(delegate)搭配使用,即协议声明需要实现的代理方法,代理去实现协议声明的方法
④代理是一对一的回调机制,代理对象实现协议对象,并且需要建立代理关系才能进行通信

协议在发出代理请求的类的.h文件中声明(有A类和B类两个类,A想让B帮忙做一些事情,则B就是A的代理,A来声明要做的事情,B来实现A所要求的事情),在代理类的.m文件中实现。

A.h
A.m
B.h
B.m

其中,A类.h文件中,@property(nonatomic,weak)id<FirstDelegate> delegate; 要使用weak修饰词,weak不会使引用计数+1,防止循环引用造成内存泄露。

Block:
①一对一的回调机制,更加简洁
②当回调时间比较多时,建议使用代理
③无论当前环境是ARC还是MRC,只要block没有访问外部变量,block始终在全局区
④在ARC情况下,block如果访问外部变量,block在堆里;block可以使用copy和strong,block是一个对象
⑤如果要在block中直接使用外部强指针会发生错误,使用以下代码在block外部实现可以解决
__weak typeof(self) weakSelf = self;
但是如果在block内部使用延时操作还使用弱指针的话会取不到该弱指针,该指针已经被销毁,需要在block内部再将弱指针强引用一下
__strong typeof(self) strongSelf = weakSelf;

推荐阅读更多精彩内容

  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 25,390评论 30 469
  • block 虽然很早就学习过block方面的知识,但一直没怎么用过,说明自己还是个菜鸟中的菜鸟,看到大牛们的代码优...
    指尖书法阅读 3,256评论 0 8
  • iOS面试小贴士 ———————————————回答好下面的足够了------------------------...
    不言不爱阅读 1,497评论 0 7
  • ———————————————回答好下面的足够了---------------------------------...
    恒爱DE问候阅读 1,321评论 0 4
  • 后期剪辑/后期制作/影视后期/视频编辑/视频剪辑师 前言: 听到过不计其数的人说迷茫大多数人的做法是嘴上喊着迷茫,...
    朔马渔阳1阅读 1,086评论 0 1
  • 少女,你为何升起旗帜让思念寄托早风,向那方呼唤对着偶然相遇的乌鸦少女,今日也是红白色的以蓝色点缀的旗帜在翻动——虞...
    Super安浅浅阅读 2,655评论 81 73
  • 周五与学生一起学习了《青蛙写诗》一课。在讲这篇文章时,用了一贯常用的方法:一、学生自由拼读课文,要求借助拼音,目的...
    茶与书阅读 3,623评论 0 2
  • 总觉得时间那么长,我们应该慢慢走,慢慢的成长,慢慢的欣赏,慢慢的品尝……依稀记得小时候同学们一起玩捉迷藏时...
    爱笑的猪宝贝阅读 83评论 0 0
  • 问问题的原则 第一,首先能搜出来的绝对不问别人。 第二,你要知道,你问别人问题的目的是什么? 第三,要方便他人回答...
    忠良162阅读 75评论 0 0