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的一些总结:


警告的处理
  • 一个是一个警告标识,不是整行都划线警告,这种可修复可不修复.
  • 一个是整行的大警告,这种要修复.整行都警告了肯定是有不合理的地方.

原文地址:https://www.cnblogs.com/lyandy/p/5116824.html