类的本质

2016-01-09  本文已影响48人  MarkTang
获取类的对象
[实例对象 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];
上一篇下一篇

猜你喜欢

热点阅读