ios基础之一天一道笔试题(4)

请写出程序输出结果:

@implementation Son : Father
 
- (id)init {
   self = [super init];
   if (self) {
      NSLog(@"%@", NSStringFromClass([self class]));
      NSLog(@"%@", NSStringFromClass([super class]));
    }
   return self;
}
@end

结果: Son, Son
解析:此题主要考察对self和super的理解
首先看下objc_super这个结构体,下面会用到:

struct objc_super {
id receiver;
Class superClass;
};

该结构体拥有两个成员变量:receiver-->子类对象和superClass-->父类。
在本例中,super是一个编译器符号,当编译器遇到[super init]时会构 建 objc_super 的结构体,receiver则表示Son类中的实例对象,和self相同,superClass 表示Father ,[super init]即表示找到Father 中的init方法,用Son类的实例对象self调用此方法;self是当前类的一个实例对象,self和super指向的都是同一个对象,区别是查找方法的位置不同,self表示从当前类查找方法,super表示从父类中查找方法,所以输出[self class]和[super class]时都会是Son类

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 1,857评论 0 9
  • 尽管我们越来越现实,但是请不要忘记我们最初的梦想。 人,越能干,就越累, 越懂事,越没有人心疼, 越明事理的,就越...
    ec0dd6eefd56阅读 350评论 1 1
  • 痴人吐虹 群里弹出一个视频 虹,宛如少女诱人的曲线 蓝天撕开乌云,垂涎欲滴 文兄,不是我会喷 我吐口唾沫星子 就能...
    肖弓阅读 173评论 0 0
  • 核心内容,从3个角度来讲述人类发展的脉络,分别是,认知革命,农业革命和科学革命。 认知革命:是指,人类这种动物的发...
    铭现阅读 520评论 0 1
  • “悉悉索索”她的皮靴踩在草丛上,发出轻微的、草被踩弯的声音。她借着穿过大树繁密枝叶的微弱月光,摸索着向森林深处潜进...
    Wuli朔葭阅读 348评论 0 1