Android开发工程师iOS之旅--单例模式

版权声明:转载请注明出处。 https://blog.csdn.net/rentee/article/details/80922180
+ (AppManager *)shareInstance { //注释1
    static AppManager *instance; //注释2
    static dispatch_once_t t; //注释3 
    dispatch_once(&t, ^{ //注释4
        instance = [[super alloc] init];
    });
    return instance;
}

注释1. Java中喜欢命名为getInstance,但是这里用shareInstance,因为get前缀在OC中有特殊含义

注释2. 与Java的static可不一样,这里的局部变量instance的存储区会从栈区放到静态存储区,从而延长了其生命周期,下次调用shareInstance方法时,还是会使用之前的instance实例

注释3. dispatch_once iOS GCD技术了解一下 http://www.cocoachina.com/ios/20161031/17887.html 当然,也可以用@synchronized方式实现,不过dispatch_once效率更高

注释4. dispatch_once 的机制确保了其线程安全

猜你喜欢

转载自blog.csdn.net/rentee/article/details/80922180