我来自C ++的世界,因此给this
分配值的概念让我感到不安:
this = new Object; // Gah!
但是在 Objective-C 中有一个类似的关键字 self
,对于它来说这是完全可接受的:
self = [super init]; // wait, what?
很多Objective-C示例代码在init
例程中使用以上行。我的问题是:1)为什么将值赋给
self
是有意义的(像“因为语言允许”这样的答案不算)?2)如果我在
init
例程中没有分配self
,会发生什么?我是否会让我的实例处于某种危险之中?3)当以下
if
语句失败时,它意味着什么,我应该怎么恢复:- (id) init
{
self = [super init];
if (self)
{
self.my_foo = 42;
}
return self;
}
this
的概念与分配self
具有非常不同的含义。 - fbreretoif ((self = [super init])) { ... }
(双括号表示 '=' 故意不是 '==')。 - mk12