一、什么是单例
单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。
这个是百度百科直接找的,不过简单的地说:单例,其实就是整个工程共用一个实例对象。彷佛如一个公司的所有人,共用一台饮水机,只要有谁对饮水机做了操作,全公司的人都可以看到变化。
二、单例一般用法
单例用的最多的,应该是页面间的传值了,我在A页面对单例赋了一个值,之后我在B页面再把这个单例中的值取出,这样就完成了页面间的传值了。
举个例子,A想给B留个纸条,于是,A将纸条贴在门上,就离开了,之后B来到门口时,就可以看到门上留的纸条了
三、单例的使用
工程信息如下:
在Person.h中的代码:
#import <Foundation/Foundation.h>
@interface Person : NSObject
@property (nonatomic, copy) NSString *name;
+ (instancetype)defaultPerson;
@end
Person.m中的代码:
#import"Person.h"
@implementation Person
static Person *person = nil;
+ (instancetype)defaultPerson{
if (person == nil) {
person = [[Person alloc] init];
}
return person;
}
@end
自定义创建方法的实现时:如果这个实例为nil,就创建;如果不为nil,就将原本的实例返回,保证由始至终只有一个实例。
main.m中的代码:
#import <Foundation/Foundation.h>
#import"Person.h"
int main(int argc, constchar * argv[]) {
@autoreleasepool {
Person *p = [Person defaultPerson];
p.name = @"jay";
Person *p2 = [Person defaultPerson];
NSLog(@"%@", p2.name);
} return0; }
注意:一定要使用我们自定义的创建方法。
这样一个单例模式的简单使用就完成了。