首页 > 代码库 > 单例的2种使用方式

单例的2种使用方式

 

 

一直都对设计模式,限于书本的理论知识,今天终于用到了众多设计模式中的一种,单例模式。

 

一共有2种使用方法。第一种是用它里面的函数,第二种是用它里面的变量。

 

上代码:

 

第一种,用里面的函数。

 

单例.h

 

@interface NetManager : NSObject+ (id)sharedManager;-(void)firstPrintf;-(void)secondPrintf;-(void)threeprintf;-(void)fourprintf;@end

 

单例.m

 

static NetManager *manager;@implementation NetManager#pragma mark - 获取单例+ (id)sharedManager{    if (!manager) {        manager = [[NetManager alloc]init];    }    return manager;}-(void)firstPrintf{    NSLog(@"first Printf!!!!");}-(void)secondPrintf{    NSLog(@"second printf!!!!!");}-(void)threeprintf{    NSLog(@"three printf!!!!!!!");}-(void)fourprintf{    NSLog(@"fourprintf!!!!!!");}

 

单例的使用:

 

- (void)viewDidLoad{    [super viewDidLoad];    // Do any additional setup after loading the view.            //单例的用法,单例中的函数,可以在程序中直接使用。    [[NetManager sharedManager] firstPrintf];    [[NetManager sharedManager] secondPrintf];    [[NetManager sharedManager] threeprintf];    [[NetManager sharedManager] fourprintf];}

 

 

第二种,使用单例中的变量,这个在登陆的时候,用到的比较多。

 

单例.h部分

#import <Foundation/Foundation.h>@interface UserInfo : NSObject+ (id)sharedManager;@property (nonatomic , retain) NSString* username;@property (nonatomic , retain) NSString* password;@end

 

单例的.m部分

 

#import "UserInfo.h"static UserInfo * userInfo;@implementation UserInfo#pragma mark - 获取单例+ (id)sharedManager{    if (!userInfo) {        userInfo = [[UserInfo alloc]init];    }    return userInfo;}

 

 

单例的使用:

 

- (void)viewDidLoad{    [super viewDidLoad];    // Do any additional setup after loading the view.            //给单例的变量赋值    [[UserInfo sharedManager] setUsername:@"李华"];    [[UserInfo sharedManager] setPassword:@"123456"];            //打印单例的值    NSLog(@"---userName----%@",[[UserInfo sharedManager] username]);    NSLog(@"------password---%@",[[UserInfo sharedManager] password]);        }