OC加强04
协议(protocol) 关键符号<>
- 是专门用来写方法声明的,协议内不能写属性(不是类),可以写@proterty和分类中@property一样.
- 遵守协议的类就拥有了这个协议的所有方法声明,而不用自己再区声明.(遵守你得先导入这个协议文件),@required(默认)规范是必须写这个方法的实现,不写就会报警告.@optional(可选的),实现可以选择性写.
- 协议可以多遵守* <协议1,协议2> *
- NSObject协议基协议(协议和类名可以相同).规范:自定义协议要直接或间接遵守NSObject基协议.
- 协议可以继承.子协议拥有父协议所有的方法的声明.
协议的类型限制:
- id< Protocol1 ,Protocol2> *p1—–>指针指向的对象要遵守这个协议(类中遵守),可多遵守协议.
- 作用:保证这对象一定有这个方法.
代理模式的引入
- 代理对象的理解:帮助当前对象,完成某件事情.
- 作用:传递多个数据.
- 步骤:1,构造协议,写方法声明.2,构建代理对象类,写协议的实现.3,对象内有对象属性遵守那个构造协议.4,给代理属性一个对象实体,将他赋值给对象.
- 简单的说,就是对象A中有id类型的对象遵守协议C,对象B是遵守协议C的,对象A通过对象B做事情,甚至返回数据,最后还要给id这个对象属性赋值一个对象B实体.
代理属性属性名叫delegate,类型为id.
NSString
NSString *str = nil ————->nil
NSString *str1 = [NSString new];–>”“(空)
NSString的恒定性
NSString *str = [NSString new];--->堆区
NSString *str1 = @"jack";--------->常量区
无法更改字符串内容.创建字符串对象如果有会直接给地址,没有会重新创建.
- nullable代表返回的对象有可能是nil.