小糖出品:关于id、self、super的解释

                           在上一篇博文中,小糖提到了id、self、super这三个。那这篇博文呢,小糖就对这三个进行解释。

                           首先我们来看id,id是什么呢?还记得小糖之前说过,它是一个类型吗。其实id是一个通用的类型,它可以代表所有对象的类型,也就是说任意的对象都可以赋值给id类型的变量。它和void *是类似的,都是声明一个任意类型的指针。id通常用在方法的参数或者返回值类型,用id作为方法的参数类型,可以传入任意类型的参数。那么,id是如何工作的呢?假如你定义了一个id类型的对象,你需要用它来调用某个方法,那么调用的时候,oc会执行动态绑定,即oc会跟踪对象所属的类,在运行的时候判断对象所属的类,然后确定需要动态调用的方法。注意,不是在编译的时候确定要调用的方法,而是在运行的时候。

                           接下来我们来看self,self是什么呢?它是一个关键字,它总是指向调用该方法的那个对象,调用当前类的方法,也就是说谁调用了该方法,self就代表的是谁。它所代表的对象只能是当前类的实例,也就是说self不能出现在类方法中,因为类方法调用者是类本身,而不是对象,如果在类方法中使用self的话,self就不能确定它代表的是谁了。故self只能在实例方法中使用,而无法在类方法中使用。如果你在当前类中调用了某个方法,恰好当前类中没有此类方法,那么它会调用吗?其实是会的,它会去从当前类的父类中去调用,这里就涉及到继承的问题,我们留到后面再讲。现在我们只要知道,self是优先调用当前类的方法,若当前类中无此方法,便从当前类的父类中调用。

                           最后我们来看super这个关键字,super指的是父类对象本身,可以用来调用父类继承下来的方法,这里同样涉及到了继承,所以,当小糖讲到继承的时候,再具体讲讲这个super关键字。

                          这次讲的东西内容不多,有些涉及到了继承方面的知识,所以小糖在这里对super只是提了一下,讲了下super的概念,至于id和self两个,小糖在以后用到的时候也会再次讲的。好了,这次的博文到这里就结束了,我们下次再见吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值