单例
来源:互联网 发布:阿尔法橱柜门板软件 编辑:程序博客网 时间: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