有人能说出目标C的自我和C ++这个指针之间的区别吗?
答案 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 ++类中用于表示当前实例的指针。
他们在完全不同的结构上扮演类似的角色。