获取类的对象
[实例对象 class];
[类名 class];
Class *c1 = [p1 class];
2.用于创建实例对象
person * p3= [[c3 alloc]init];
2.2用于调用方法
[c1 test];
3.用于作为函数参数
-(void)test(Class c)
{
id obj = [[c alloc]init];
return obj;
}
小写 class 是方法
大写Class是数据类型
//问题:类的本质是什么?
答:
创建类对象
类其实也是一个对象, 这个对象会在这个类第一次被使用的时候创建
只要有了类对象, 将来就可以通过类对象来创建实例对象
实例对象中有一个isa指针, 指向创建自己的类对象
类对象中保存了当前对象所有的对象方法
当给一个实例对象发送消息的时候, 会根据实例对象中的isa指针去对应的类对象中查找
所有类对象的继承关系就是元类对象的继承关系
----------------------------------------------------------------
#mark- 17-获取类对象及类对象应用场景
//问题1:如何获取类对象?
答:
[Person class]
// [实例对象 class]; [类名 class];
Person *p1 = [[Person alloc] init];
Person *p2 = [[Person alloc] init];
// 一个类再内存中只有一份类对象
Class c1 = [p1 class];
Class c2 = [p2 class];
Class c3 = [Person class];
NSLog(@"c1 = %p, c2 = %p, c3 = %p", c1, c2, c3);
//问题2:类对象的应用场景
答:
用于创建实例对象
Person *p3 = [[c1 alloc] init];
p3.age = 30;
NSLog(@"%i", p3.age);
用于调用类方法
[Person test];
[c1 test];
网友评论