objective-c - 将 init 中的 self 分配给不同的指针

标签 objective-c cocoa cocoa-touch automatic-ref-counting

当我不将 self 分配给它的 super init 而是分配给一个完全不同的指针(甚至是静态指针)时,是否有任何暗示? arc 会正常运行吗?这样的行动会产生什么影响?

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,将会引起困惑,因为其他人可能持有对它的引用。

关于objective-c - 将 init 中的 self 分配给不同的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40180139/

相关文章:

objective-c - 我可以使用 NSDictionaryController 作为字典的字典吗?

objective-c - 我可以在 Objective-C 中将协议(protocol)作为类变量吗?

objective-c - 某种消息类型的符号中断?

iphone - 在 iPhone SDK 中通过短信和电子邮件发送 ASCII Art 时对齐不正确

ios - 如何创建包装 UIOffset 结构的 NSValue?

objective-c - AF联网进展

ios - StartUpdateLocations在后台运行,didUpdatingToLocation仅调用10-20次

ios - 将编程创建的 View 垂直添加到 ScrollView 中(iOS 中的线性布局)

macos - 脚本桥接并生成 Microsoft Word 头文件

cocoa - Cocoa 可以自动处理法语本地化字符串的缩写吗?