OC的SEL和id

SEL s2 = @selector(eat:);

 [ani performSelector:s2 withObject:@"一块沾有粑粑的棒棒糖"];

 

 [ani performSelector:@selector(eat:andFoodName:)

 withObject:@"班长养的恶狗"withObject:@"一块沾有粑粑的棒棒糖"];

 

 

 

 SEL(是一个包含地址的类型)

22)id类型:

NSObject和id类型都可以指向任何对象

 NSObject会进行编译时检查(需要强制类型转换)

 id不需要强制类型转换,id可以直接使用

 编译器看到id类型,认为是动态类型,不在检查类型

23)多态:

父类不能访问子类方法

 多态的概念:不同的对象以自己的方式响应相同名称的能力称为多态

 体现出来:父类的指针指向了子类的对象

 多态的条件:1)有继承关系

 2)有方法重写 (子类把父类的同名方法给重写了)

 

 多态的使用注意:

 

1)使用子类的方法如果父类中没有此方法则使用子类强制类型转换

 类对象的获取方法:

 类对象属于Class类型

 1)通过实例对象来获取

 Class c1 = [d class];

 Class c2 = [d1 class];

 2)通过类名来获取类对象

 Class c3 = [Dog class];

 NSLog("%p", c3);

24)构造方法:

new方法的内部会分别调用两个方法类完成3件事情:

 1)使用alloc方法来分配存储空间(返回分配的对象);

 2)使用init方法来对对象进行初始化;

 3)返回对象的首地址

 

 init是一个对象方法

 

 [Person alloc] 的时候,内存已经被清0(其中的属性被0初始化)

 

 OC构造方法,学习哪些内容:

主要学习如何重写构造方法,让对象创建成功后,就有初始的值

 super指代的是父类对象

25)自定义构造方法:

1)是一个对象方法:

 2)返回是id类型(instancetype)

 3)方法名一定要以 initWith

 -(instancetype)initWithName:(NSString *)name andAge:(int)age{...}

 Person *p1 = [Person alloc] initWithName:@"张三丰"andAge:

posted @ 2015-07-24 19:36  do+better  阅读(302)  评论(0编辑  收藏  举报