一. 动态类型检测 /**********************对象和类之间的判断***********************/ 1、isKindOfClass:Class 判断实例对象是否是这个类或者这个类的子类的实 例。
2、isMemberOfClass:Class 判断对象是否是这个类的实例。
/**********************类和类之间的判断*******************/ 3、+(BOOL) isSubclassOfClass:classObj 判断类是否是指定类的子类。 格式: [类A isSubclassOfClass:类B]; 判断类A是否是类B的子类; 是 YES 不是 NO
/**********************对象和方法之间的判断*******************/ 4、- (BOOL)respondsToSelector:(SEL)aSelector; 用的比较多; 判断对象是否可以调用这个方法;
5、+ (BOOL)instancesRespondToSelector:(SEL)aSelector; 判断类是否有这个方法。此方法是类方法, 不能用在类的对象
/**********************方法的执行*******************/ 6,响应方法 -(id) performSelector:selector(应用selector指定的方法) NSObject的方法 // 一个参数 -(id) performSelector:selector withObject:object(应用selector指定的方法,传递参数 object) // 二个参数 -(id) performSelector:selector withObject:object1 withObject:object2(应用selector指 定的方法,传递参数object1和object2)
二, 构造方法 1,什么是构造方法: 用来初始化对象的就是构造方法;是个对象方法,- 开头
2,创建对象:Person *p=[Person new];默认初始化 new方法内部做了3件事情: (1)使用alloc方法来分配存储空间(返回分配的对象); (2)使用init方法来对象进行初始化。 (3)返回对象的内存首地址。
可以把new方法拆开如下: (1).调用类方法alloc分配存储空间,返回未经初始化的对象 Person *p1=[Person alloc]; (2).调用对象方法init进行初始化,返回对象本身 Person *p2=[p1 init]; (3).以上两个过程整合为一句: Person *p=[[Person alloc] init];
|