一. 类方法和对象方法的简单区别
对象方法
以-号开头
里面可以使用成员变量
用对象来调用
对象方法可以调用类方法和对象方法
类方法
以+号开头
不可以使用成员变量
类名来调用
类方法可以调用类方法(除自己外)
可以作为工具方法
区分同名的对象方法与类方法
根据方法前面的标识符。—对象 + 类
使用场景:
尽量使用类方法(类方法可以节省内存空间,提高效率)
当有成员变量时,不能使用类方法
小结:
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右侧的代码块儿快速生成代码
方法:< + # +代替的部分 + # + >这样这一部分就会变成可编辑的