单例

来源:互联网 发布:阿尔法橱柜门板软件 编辑:程序博客网 时间:2024/04/30 07:51

这里写图片描述

Singleton.h#import <Foundation/Foundation.h>#pragma mark 单例是一种设置模式,为了让整个工程里面的整个对象唯一存在,iOS的单例一般存放的用户的账号,数据库的指针,还有播放器对象等.// 创建单例对象的方法一定是加号方法,而且整个方法里有很多特色的词,比如:default,standard,main,share等,方法命名都是特色词加类名://  [NSBundle mainBundle];//  [UIScreen mainScreen];//  [NSFileManager defaultManager];//  [NSUserDefaults standardUserDefaults];@interface Singleton : NSObject+ (instancetype)shareSingleton;@property(nonatomic, copy)NSString *str;@end
Singleton.m#import "Singleton.h"@implementation Singleton+ (instancetype)shareSingleton {    // 创建单例的第一种写法.    static Singleton *singleton;    if (singleton == nil) {        singleton = [[Singleton alloc] init];    }    return singleton;    // 创建单例的第二种写法.    static Singleton *newSingleton;    static dispatch_once_t onceToken;    dispatch_once(&onceToken, ^{        newSingleton = [[Singleton alloc] init];    });    return newSingleton;}@end
FirstViewController.m#import "FirstViewController.h"#import "Singleton.h"@interface FirstViewController ()@end@implementation FirstViewController- (void)viewDidLoad {1.引入头文件,在本文件用单例给属性赋值.        [Singleton shareSingleton].str = @"哈哈";    NSLog(@"VC1 = %@", [Singleton shareSingleton].str);}
SecondViewController.m#import "SecondViewController.h"#import "Singleton.h"@interface SecondViewController ()@end@implementation SecondViewController- (void)viewDidLoad {2.在另一个文件中依然可以打印出已赋值好的单例属性.    NSLog(@"VC2 = %@", [Singleton shareSingleton].str);}
0 0