差异b / w Objective C的自我和C ++是什么?

时间:2010-09-28 08:08:16

标签: c++ objective-c

有人能说出目标C的自我和C ++这个指针之间的区别吗?

2 个答案:

答案 0 :(得分:22)

主要区别在于this是关键字,而self是变量。这样做的结果是,虽然this 总是指的是执行特定方法的对象,但Objective-C方法可以在执行期间自由修改self。这有时会被构造函数使用,它会在失败时设置self = nil

这样做的原因是:

  • 以便子类(使用self = [super init]链接初始化者)可以看到初始化失败并且知道不能在他们自己的初始化程序中继续进行。
  • 撰写对象可以看到失败并知道它们没有有效的组件。

某些初始化工具会将self设置为不同但有效的对象。这可以在类集群中使用,其中“abstract”类可以在构建初始化对象时生成临时实例,但最终会根据构造期间构建的属性返回不同的对象。

此外,这意味着您可以使用变量名称来执行常见操作,这会使每个人无法使用关键字,例如在代码块中定义具有相同名称self的更多本地变量

答案 1 :(得分:6)

是。一个拼写为s-e-l-f。另一个拼写为t-h-i-s。

不那么讽刺:

在Objective-C类中使用

self来表示当前实例的指针。

this在C ++类中用于表示当前实例的指针。

他们在完全不同的结构上扮演类似的角色。