我正在查看一些代码并遇到了一些看起来像这样的东西(假设它是为TestObject
类定义的)
-(id) init
{
if (self == [super init])
{
self.testString = @"Hello";
}
return self;
}
我及时改变
if (self == [super init])
到
if (self = [super init])
但后来意识到(虽然我知道这是不对的)代码按原样工作,我将原始代码隔离在一个超简单的程序中
TestObject* testObject = [[TestObject alloc] init];
NSLog(@"%@", testObject.testString);
令我惊讶的是,这行得通。为什么相等检查而不是赋值不会破坏事情?为什么是
self == [super init]
在初始化开始时是真的,在我分配它之前?