单例

这里写图片描述

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);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值