iOS常见面试题归纳(二)代码篇

2017-07-31  本文已影响39人  背靠背的微笑
图片来自网络

1、请简述self.name = xxx 与_name= xxx 的区别

self.name = xxx 是调用setName方法
_name = xxx 不会调用setName方法 是直接赋值

2、下面的代码会输出什么?

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

// 解析:
son
son
self 是类的隐藏参数,指向当前调用方法的这个类的实例。
super是一个Magic Keyword,它本质是一个编译器标示符,和self是指向的同一个消息接收者。
不同的是:super会告诉编译器,调用class这个方法时,要去父类的方法,而不是本类里的。
上面的例子不管调用[self class]还是[super class],接受消息的对象都是当前 Son *obj 这个对象。

上一篇 下一篇

猜你喜欢

热点阅读