IOS Super的理解
来源:互联网 发布:ubuntu安装qq2017 编辑:程序博客网 时间:2024/06/03 19:32
IOS Super的理解
@implementation Son : Father
- (id)init
{
self = [super init];
if (self) {
NSLog(@”%@”, NSStringFromClass([self class]));
NSLog(@”%@”, NSStringFromClass([super class]));
}
return self;
}
@end
.上边代码会输出什么,为什么
一道有意思的题目。分析下:
两句输出语句均输出:Son
简单来说,self和super都是指向当前实例的,不同的是,[self class]会在当前类的方法列表中去找class这个方法,[super class]会直接开始在当前类的父类中去找calss这个方法,两者在找不到的时候,都会继续向祖先类查询class方法,最终到NSObject类。那么问题来了,由于我们在Father和Son中都没有去重写class这个方法,最终自然都会去执行NSObject中的class方法,结果也自然应该是一样的。至于为什么是Son,我们可以看看NSObject中class的实现:
-(Class)class {
return object_getClass(self);
}
这就说的通了,返回的都是self的类型,self此处正好就是Son,因此结果就会输出Son。
阅读全文
0 0
- IOS Super的理解
- iOS - self & super 理解的关键点
- super的理解
- iOS 中self和super如何理解?
- iOS开发视图控制器(ViewController)调用[super viewXXX]的简单理解
- super不是父类的引用,理解super
- 正确的理解this 和 super
- 无聊:正确的理解this 和 super
- 正确的理解this 和 super
- java基础知识--对super()的理解
- self,super 实例方法的一点理解
- if(self = (super init))的理解
- 对 self = [super init] 的理解
- java super 语句的理解以及注意事项!
- 对super函数的简单理解
- Java泛型中extends和super的理解
- <? extends Fruit>与<? super Apple>的理解
- ios开发self和super的区别
- Apache+Tomcat+mod_jk负载均衡配置
- Apache+https
- Effective c++ 学习笔记(五)
- Visua Assist X V10.9.2074.0 官方原版
- VS2010编译QWT示例出错 MSB6006: “cmd.exe”已退出,代码为 255
- IOS Super的理解
- Qt5汉字乱码
- RHEL6.4使用yum提示需要注册
- Qt4.8.6 VS2010 QWT6.1.2
- Linux API函数大全
- Linux安装QT4.8.6和Qt Creator
- [Android]笔记10-单选按钮和复选框的功能与用法
- CPA备考经验贴汇
- Linux系统下测试磁盘读写速度技巧