A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© zlc 中级黑马   /  2015-7-11 21:01  /  873 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


  1. @implementation Person
  2. //当子类把父类的init覆盖了,这是默认的先执行子类的
  3. - (instancetype)init{
  4.     //先让父类把父类原来做的事情做完
  5.     self = [super init];
  6.     //判断父类是否初始化成功
  7.     if (self) {   
  8.         //此处写子类初始化的内容
  9.         _age = 10;  //给年龄设置为默认值 10岁
  10.     }
  11.     return self; //self指代的事方法的调用者
  12. }
  13. @end
复制代码

1.[super init]的作用:
面向对象的体现,先利用父类的init方法为子类实例的父类部分属性初始化
2.self为什么要赋值为[super init]:
简单来说是为了防止父类的初始化方法release掉了self指向的空间并重新alloc一块空间。这时的话[super init]可能alloc失败,这时就不再执行if中的语句
3.super作为消息接受者的实质:
super并不是真正的指针,[super message]的实质是由self来接受父类的message。需要注意的是,[super message]中,message方法出现的self为[super message]语境中的self,即子类实例。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马