ios - 如何在 `init` 中初始化线程安全变量?

标签 ios objective-c multithreading synchronization thread-safety

我有以下代码:

{
    NSObject *_object;
}

- (instancetype)init {
    if (self = [super init]) {
        _object = [[NSObject alloc] init];
    }

    return self;
}

- (NSObject*)object {
    return _object;
}

如果在 init 完成并返回后从第二个线程调用方法 object,我如何知道对 _object 的赋值init 将是可见的,它实际上并没有返回未分配的指针?

保证这一点的内部机制是什么?

最佳答案

代码的线程安全性取决于它的使用方式,而它的预期使用方式本质上是线程安全的。您不应该传递部分构造的对象,因此分配和初始化([[... alloc] init]new)应该限制在单个线程中然后传递给其他线程。

关于ios - 如何在 `init` 中初始化线程安全变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29122978/

相关文章:

ios - ARC 使我痛苦

objective-c - 当我执行 popViewController 动画时无法显示导航栏

java - Java中的线程安全全局变量

ios - 物理 iPad Pro 设备返回的语音合成语音是否与其模拟器不同?

javascript - 将 HTML5 集成到 native iPad 应用程序中

ios - 为什么 dispatch_async 不好?完成相同任务的更好方法是什么?

objective-c - 从 MacRuby 中的自定义初始化程序调用不同的父类(super class)初始化方法

ios - 从 objective-c 中的主线程返回值

mySQL 创建多个临时表

c# - .NET 中的线程池和 .IsBackground