【发布时间】:2013-03-25 17:36:24
【问题描述】:
我在查看一些代码时遇到了一些看起来像这样的东西(假设它是为 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]
在初始化开始时为真,在我分配它之前?
【问题讨论】:
标签: objective-c cocoa constructor initializer