黑马程序员——OC中的类方法和对象方法

一. 类方法和对象方法的简单区别

对象方法

 -号开头

 里面可以使用成员变量

 用对象来调用

 对象方法可以调用类方法和对象方法

 

 类方法

 +号开头

 不可以使用成员变量

 类名来调用

 类方法可以调用类方法(除自己外)

 可以作为工具方法

 

 区分同名的对象方法与类方法

 根据方法前面的标识符。—对象    + 类

 

 使用场景:

 尽量使用类方法(类方法可以节省内存空间,提高效率)

 当有成员变量时,不能使用类方法


小结:

     1.类方法调用自己的类方法      可以

     2.类方法调用自己的对象方法     不可以

     3.对象方法调用自己的类方法     可以

     4.对象方法调用自己的对象方法    可以

    // 类方法在调用类方法的时候,不能自己调自己,会造成死循环

         //   同名的对象方法与类方法是两个不同的方法


编译时常见的错误原因:   

    //  unrecognized selector sent to instance 0x100201c20 出现原因:对象没有找到要调用的方法

    //  unrecognized selector sent to class 0x1000011d8'出现原因:类没有找到要调用的方法


二.    匿名对象

     Cat *cat1 = [Cat new];  //实名对象,用同类的指针保存了对象的地址

    [Cat new];  //匿名对象,只是通过new创建了一个对象出来

    

    cat1->_name = @"加菲猫";

    // 

    [Cat new]->_name = @"好猫";

    [[Cat new] lookMyCat]; //打印的是空,因为每new一次创建一个新的对象

    

   //匿名对象的作用

   //1.当调用使用次数很少的方法的时候,就直接使用匿名对象调用。

    [[Cat new] lookMyCat];


   //2.匿名对象可以作为参数传递,当不需要给传递的对象的成员变量赋值的时候,就使用匿名对象作为参数传递

    Person *person1 = [Person new];

    [person1 feedCat:[Cat new]];


   //作用:节省代码,节省内存


三.    组合模式:一个对象作为另一个对象的成员变量

    优点:节省了代码,使两个类产生了关系

    缺点:依赖性太高(耦合性太高)

    场合:当可以用谁属于谁这种方式来表述的时候,就可以用组合模式

#import <Foundation/Foundation.h>

#import "Iphone.h"

@interface Girl :NSObject

{

   NSString *_name;//名字

         iphone *_iphone; //女孩拥有的iphone

}


四. 补充

    利用xcode右侧的代码块儿快速生成代码

    方法:< + # +代替的部分 + # + >这样这一部分就会变成可编辑的


猜你喜欢

转载自blog.csdn.net/yubingdian2011/article/details/40506349