iOS 基础 第五天(0811)
0811
ARC
- ARC判断准则:只要没有强指针指向对象,就会释放对象
指针
指针分两种:
- 强指针:默认情况下,搜有的指针都是强指针
- 弱指针:week修饰(一个是控件,一个是delegate代理)
循环强引用的情况参见 iOS学习(一)
注意非arc的情况是retain和assign组合,arc的情况是strong和week组合
下面是block的使用方法
block在C#用叫回调,在Android中叫匿名方法
block是由函数演变而来
block是用来保存代码块的,方便以后随时调用
block的标志:^
block有返回值
block有形参
不能随意访问外部的变量,如果访问需要加__block
调用方式基本和方式一样
就如这样:(返回值)(^block名称)(形参) = ^(形参){}
下图是一个典型的block:
1、block的使用场合:多在多线程、异步任务、集合遍历、集合排序、动画转场等
下面是protocal的用法######
protocal协议主要用在两种模式上,分别是代理模式和观察者模式
protocal就是协议,只要一说到协议就是指protocal.协议只需要一个.h头文件就可以了,因为它需要包含方法的声明即可,方法的实现让代理去实现即可.一般协议和其类的声明@interface写在一起._
以下三点非常重要:
1、用来声明一大堆方法,可以交给任何一个类去实现,只要这个类遵循的这个协议
2、只要某个类遵循了某个协议,就相当于拥有这个协议中的所有方法声明
3、只要父类遵循了某个协议,就相当于子类也遵循了.
4、protocal中方法默认是@required,可以实现,也可以不实现,不实现只会警告不会报错.和C#中的接口不一样,你实现了某个接口,就必须实现接口中的所有方法.如下图所示:
只要这个类遵循了这个协议,成为了代理,实现了协议中的某些方法,那么这个类就具有了调用代理者的监听和通知的功能
下面是protocal的一些总结:
警告的处理
- 一个是一个警告标识,不是整行都划线警告,这种可修复可不修复.
- 一个是整行的大警告,这种要修复.整行都警告了肯定是有不合理的地方.