有人能区分 Objective C 的 self 和 C++ 的 this 指针吗?
主要区别在于this
是一个关键字,而self
是一个变量。这样做的结果是,虽然this
always指正在执行特定方法的对象,Objective-C 方法可以自由修改self
执行期间。这有时被构造函数使用,它设置self = nil
失败时。
这样做的原因是:
- 这样子类(将初始化器与
self = [super init]
)可以看到初始化何时失败,并且知道不要在自己的初始化程序中继续进行。
- 组合对象可以看到失败并知道它们没有有效的组件。
一些初始化器会设置self
到另一个不同但有效的对象。这可以在类集群中使用,其中“抽象”类可以在构建初始化对象时生成临时实例,但最终根据构建期间构建的属性返回不同的对象。
此外,这意味着您可以使用变量名执行一些常见的操作,这些操作会让每个人都感到困惑,而使用关键字则无法执行此操作,例如定义一个具有相同名称的更局部的变量self
在代码块中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)