当我不将自身分配给它的超级初始化,而是分配给完全不同的指针,甚至是静态指针时,有什么含义吗?电弧会正确运行吗?这种行动有什么意义?

static NSObject * StaticObject;

- (instancetype)init {

    self = StaticObject;
    if (self) {

    }
    return self;
}

最佳答案

ARC的行为会很好。您将在初始化StaticObject时遇到问题。你可以做类似的事情

if (StaticObject == nil) {
    self = [super init];
    StaticObject = self;
} else {
    self = StaticObject;
}


我认为NSNull类会执行类似的操作。

假设StaticObject不是nil并且已经初始化,则修改StaticObject会引起混乱,因为其他人可能持有对该对象的引用。

07-28 06:27