在不同的线程中使用单例的最佳方法是什么

时间:2011-12-04 10:08:46

标签: ios ios4

我正在尝试构建一个单例缓存类。现在我遇到了一个问题,当两个线程同时访问我的singlton中的方法会发生什么时,它会崩溃。我的类中的手段我有一些从磁盘读取和写入文件的方法。那么克服这种情况的最佳方法是什么呢?我必须使用Locks或Syncronised方法....帮助我理解这些事情..

1 个答案:

答案 0 :(得分:0)

使用dispatch_once保证初始化仅在第一次调用方法时发生。

+ (NSArray *)foo
{
    static NSArray *_sharedFoo;
    static dispatch_once_t count = 0;

    dispatch_once(&count, ^{
        _sharedFoo = [[Foo alloc] init];
    });

    return _sharedFoo;
}

修改

有关使用调度API的更多详细信息,请参阅http://developer.apple.com/library/mac/#documentation/Performance/Reference/GCD_libdispatch_Ref/Reference/reference.html