Singleton.h
#import <Foundation/Foundation.h>
#pragma mark 单例是一种设置模式,为了让整个工程里面的整个对象唯一存在,iOS的单例一般存放的用户的账号,数据库的指针,还有播放器对象等.
@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);
}