《OC猖獗讲义》笔记(三)

《OC疯狂讲义》笔记(三)
1、类方法
 
    1)什么是类方法
 
       对象方法:
       -(返回值类型)方法名:(形参的类型) 形参名;
 
       类方法
       +(返回值类型)方法名:(形参的类型) 形参名;
 
    2)类方法怎么去定义
 
       +(返回值类型)方法名:(形参的类型) 形参名;
 
    3)类方法的使用
 
       调用:
 
       对象方法:  [对象名    方法名:实参]
 
       类方法:    [类名      方法名:实参]
 
    4)使用类方法的好处
 
       1)提高效率
 
       2)减少内存空间占用
   
       3)代码更加简洁
  
       缺点:不能访问对象的成员变量
 
    5)对象方法和类方法的对比
 
       类方法                          对象方法
       以+开头                         以 - 开头
       只能使用 类名 去调用            只能使用对象去调用
       不能访问成员变量                可以访问成员变量
       
       类方法中可以调用对象方法        在对象方法中,可以直接调用类方法
       1)对象作为方法的参数传递过来
       2)在方法中通过创建对象,然后
          再调用
 
 
 2、匿名类的使用
 
       匿名对象 -
   
            创建了对象,但是没有指针去指向它
 
            [Person new];
 
            特点: 每次使用都会新申请一块内存空间
  
       1)可以访问成员变量
 
            [Person new]->_name = @"三胖";
 
            NSLog(@"%@",[Person new]->_name);  //null
 
       2)可以调用方法
 
            [[Person new] run];
 
       3)可以作为方法的参数
 
            [p goHome:[Car new]];
 
 3、面向对象特性-封装
 
       1) 什么是封装?
 
          把复杂的数据或者操作进行隐藏,只提供操作数据或者方法的接口
 
          好处:
 
          如果要操作数据、方法必须按照要求
 
          1)隐藏数据
          2)隔离变化
          3)保护数据安全
 
       2) 不封装有什么缺点?
 
          对象失去了对对象自己的成员变量的管理权
 
       3) 如何进行封装?
 
          通过定义相关的方法,去读取或者写入数据到成员变量中
          并且成员变量的操作必须通过方法来完成
 
          1)读方法(getter) - 读取成员变量的值
 
             规范:
 
             1)一定是一个对象方法
             2)一定有返回值
             3)方法名一定是 去掉下划线的 成员变量名
             4)一定没有参数
             5)方法的实现中:一定是返回值成员变量名
 
          2)写方法(setter) - 给成员变量赋值
 
             OC中的规范:
 
             1)一定没有返回值
             2)一定是对象方法(-)
             3)方法名一定是以set开头  格式:set + 去掉下划线的成员变量名的首字母大写
             4)一定有参数
             5)参数的类型一定是和成员变量类型一致
             6)形参的名称一般建议是 去掉下划线的成员变量名
             7)写方法的实现中,一定是给成员变量赋值
 
 
 4、对象和对象之间的关系


      1) 组合模式
 
          由若干个类型相同或者实现了同一个接口的对象组合到一起
 
      2) 依赖关系
 
          A对象作 B对象的方法形参或者方法的局部变量使用,B依赖A
 
      3) 关联关系
 
          A对象 作为B对象的一个成员变量,A和B有关联关系