单例的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]);

}

单例的2种使用方式

时间: 2024-08-29 22:00:18

单例的2种使用方式的相关文章

单例的几种写作方式和序列化

2015-09-02 16:02:07 推荐一篇大神的文章,好久之前就看过这篇文章,而且本文的思路就来自这篇文章~其实有了大牛的文章,本文可写可不写,但是为了给自己总结一下,就写了~ http://callmegod.iteye.com/blog/1474441 单例的作用想必大家都知道,也一直在用,但是到底怎样的单例是“比较”完美的单例模式呢?我也不知道,但是我一直在寻找答案~ 下面我简单总结一下单例吧,否则太乱了 Part 1:单例的几种实现方式 1. 恶汉式:指在类加载或者被初始化的时候,

IOS单例的两种实现方式

单例模式算是开发中比较常见的一种模式了.在iOS中,单例有两种实现方式(至少我目前只发现两种). 根据线程安全的实现来区分,一种是使用@synchronized ,另一种是使用GCD的dispatch_once函数. [email protected]synchronized 实现 static InstanceClass *instance; + (InstanceClass *)defaultInstance{ @synchronized (self){ if (instance == ni

iOS开发之——单例的几种设计方式

单例是ios开发中常用的一种设计模式,通常用来控制器之间传值.方便.高效,全局通用. 单例模式的设计分为ARC和MRC. ARC: 方式一 1.创建一个继承自NSObject的类. 2.在这个类的.h文件中声明类方法: + (instancetype)sharedInstance; 2.在这个类的.m文件中实现以下方法: static id instance; + (instancetype)sharedInstance { static dispatch_once_t onceToken; d

单例的三种实现方式

1双重加锁模式 public class Singleton { private volatile static Singleton singleton; public static Singleton getSingleton(){ if(singleton==null){ synchronized (Singleton.class) { if(singleton==null){ singleton = new Singleton(); } } } return singleton; } pr

iOS中创建单例的两种方式

刚刚开始做iOS开发的时候,不知道怎么创建单例,在网上搜的也大多数都不太全,所以总结了一下创建单例的两种方式 首先在.h文件中声明类方法 1 +(instancetype)sharedUtils; 然后在.m文件中实现它,实现的方法有两种 第一种,在创建一个对象时先判断在程序中有没有创建过这个对象 1 static PublicUtils *DefaultManager = nil; 2 3 +(instancetype)sharedUtils 4 { 5 if (!DefaultManager

java单例设计模式八种方式

单例设计模式介绍 所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法). 比如Hibernate的SessionFactory,它充当数据存储源的代理,并负责创建Session对象.SessionFactory并不是轻量级的,一般情况下,一个项目通常只需要一个SessionFactory就够,这是就会使用到单例模式. 单例设计模式八种方式 单例模式有八种方式: 饿汉式( ( 静态常 量) ) 饿汉式(静态

[&#128175;原]IOS之Objectic-C的单例的两种安全实现方案

所有转出博客园,请您注明出处:http://www.cnblogs.com/xiaobajiu/p/4122034.html Objectic-C的单例的两种安全实现方案 首先应该知道单例的实现有两大类,一个是懒汉式,一个是饿汉式.所谓的懒汉式就是在我们用到某对象(资源)的时候,去问一个负责提供的方法要那个对象.那个方法发现没有这个资源时就去创建资源,如果是已经有该资源时就直接返回这个资源.而饿汉式就是那个负责提供的方法早已为我们准备好了我们想要的资源问它,它就提供给我们那个它早就准备好了的资源

浅谈单例的三种实现--C#

传统的double check : public sealed class Singleton { private static Singleton instance = null; private static readonly object padlock = new object(); Singleton() { } public static Singleton Instance { get { if (instance == null) { lock (padlock) { if (i

Python单例的一种简单写法

最原始的想法就是每个类都重写new方法. class Dog: dog = None def __new__(cls, *args, **kwargs): if cls.dog is None: cls.dog = object.__new__(cls) print('create singleton over') return cls.dog def __init__(self, name): print('init is called') self.name = name # 下面这句话会报