ocjia_qiang_04

来源:互联网 发布:布汶战役 知乎 编辑:程序博客网 时间:2024/06/07 19:39

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.
0 0