获取类的对象
[实例对象 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];
类的本质
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 类的本质 本质类其实也是一个 对象, 这个对象会在这个类第一次被使用的时候创建, 一个类再内存中只有一份类对象只要...