使用设计模式中的Singleton单例模式来开发iOS应用程序

2020-01-14 22:07:45于海丽

你需要注意在项目里有一个叫 API 文件夹,给你的 APP 提供服务的所有类都需要放在这里。在这个文件夹里用 iOSCocoa TouchObject-C class 创建一个新类。类的名字叫 LibraryAPI,子类选择 NSObject。

打开 LibraryAPI.h 文件用下面的代码替换里面的内容:

复制代码
@interface LibraryAPI: NSObject
+ (LibraryAPI*)sharedInstance;
@end
现在打开 LibraryAPI.m 文件,在 @implentation 后面添加如下方法:
复制代码
+ (LibraryAPI*)sharedInstance 
{
    // 1
    static LibraryAPI *_sharedInstance = nil;

 

    // 2 
    static dispatch_once_t oncePredicate;

    // 3
    dispatch_once(&nocePredicate, ^{
        _sharedInstance = [[LibraryAPI alloc] init];
    });
    return _sharedInstance;
}


在这个短方法中做了这些事情:

 

在这个类中,声明一个静态变量来保存这个实例,保证它是一个全局可用的变量。
声明一个静态这是 dispatch_one_t,确保这些初始化代码只能被执行一次。
使用 Grand Central Dispatch(GCD)执行一个 block 来初始化 LibraryAPI 实例。这是单例设计模式的关键所在:一个类只能被实例化一次。
接下来执行 sharedInstance,在 dispatch_once block 里的代码是不会被执行的(当它已经被执行过一次后),它会返回之前创建的 LibraryAPI 实例。

提示:想了解更多关于 GCD 和使用它,请点击这里的教程 Multithreading and Grand Central Dispatch,如何使用 Blocks 在这里。
你现在有一个单例对象来管理专辑了。下一步就是创建一个类用来保存你的专辑数据了。