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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© liyale92 中级黑马   /  2015-9-16 23:18  /  1039 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

   重写构造方法的固定格式:
  1. - (instancetype)init{

  2.     self = [super init];
  3.     if (self) {

  4.     }
  5.     return self;
  6. }
复制代码

这里的[super init],



super表示父类的话,为什么能调用 init 对象方法?

3 个回复

倒序浏览
是这样的,我们新创建的类都是继承自NSObject类,所以当我们重写init时调用super init,因为NSObject中有init方法,所以重写的时候,super就是NSObject
回复 使用道具 举报
RIDP 发表于 2015-9-17 00:39
是这样的,我们新创建的类都是继承自NSObject类,所以当我们重写init时调用super init,因为NSObject中有in ...

感谢回复

但是NSObject中的init方法,是减号( - )开头的对象方法

以我现在所学的知识,类 是不能调用 对象方法的

我的疑惑点在这里
回复 使用道具 举报
liyale92 发表于 2015-9-17 10:25
感谢回复

但是NSObject中的init方法,是减号( - )开头的对象方法

这个简单。。首先,你创建了对象,这个对象需要初始化,所以调用init方法

简而言之,你要初始化一个对象,就需要让这个对象调用初始化方法,所以init是对象方法

self调用的是[super init],调用了父类存在的初始化方法而已,并不是说NSObject调用了init方法

=,=不知道能不能拐过弯来?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马