最近小编所在公司招 iOS 开发职位,小编也出了几道面试题考察下候选人的 iOS 开发水平,其中有一道题如下:
@implementation Student : Person
- (instancetype)init
{
self = [super init];
if (self) {
id obj1 = [self class];
id obj2 = [super class];
NSLog(@"%@",obj1);
本文通过一道iOS面试题探讨了[self class]和[super class]的底层实现。[self class]实际上是通过objc_msgSend在当前类及其父类中寻找class方法,最终返回实例对象所属的类。而[super class]使用objc_msgSendSuper从父类开始查找,但消息接收者仍然是当前类实例,因此返回的依然是Student。当父类重写class方法时,[super class]仍然会返回父类的实现,除非返回nil。
最近小编所在公司招 iOS 开发职位,小编也出了几道面试题考察下候选人的 iOS 开发水平,其中有一道题如下:
@implementation Student : Person
- (instancetype)init
{
self = [super init];
if (self) {
id obj1 = [self class];
id obj2 = [super class];
NSLog(@"%@",obj1);
4415
47万+
438

被折叠的 条评论
为什么被折叠?
