有什么暗示,当我不将自我分配给它的超级初始化,而是指向一个完全不同的指针,甚至是静态指针?弧会表现正常吗?这种行为的含义是什么?
static NSObject * StaticObject;
- (instancetype)init {
self = StaticObject;
if (self) {
}
return self;
}
答案 0 :(得分:2)
ARC会表现得很好。初始化StaticObject时会遇到问题。你可以做点什么
if (StaticObject == nil) {
self = [super init];
StaticObject = self;
} else {
self = StaticObject;
}
我认为NSNull类会做那样的事情。
假设StaticObject不是nil并且已经初始化,如果修改StaticObject,则会引起混淆,因为其他人可能会持有对它的引用。
答案 1 :(得分:0)
我不确定这是否安全。我想你会泄漏原始自我的记忆,并可能在以后过度释放你的单身。 ARC不是魔术,它只是偷偷进入调用者的保留/释放调用,你的逻辑可能永远不会让ARC看到alloc调用的结果。