IOS传值之单例传值

在IOS应用中,不同view及应用中经常会有传值和变量共享,有几种方式可以实现:

1.extern方式

2.单例模式

3.delegate方式

单例模式顾名思义就是只有一个实例,它确保一个类只有一个实例,并且自行实例化并向整个系统提供这个实例。它经常用来做应用程序级别的共享资源控制。这个模式使用频率非常高,通过一个单例类,可以实现不同view之间的参数传递

#import <Foundation/Foundation.h>

@interface Session : NSObject
@property (strong,nonatomic) NSString *singleValue;
//实现单例方法
+ (Session *) GetInstance;
@end
#import "Session.h"

@implementation Session
// 单例对象
static Session *instance;

// 单例
+ (Session *) GetInstance {
    @synchronized(self) {
        if (instance == nil) {
            instance = [[self alloc] init];

        }
    }
    return instance;
}
-(id) init
{
    if (self = [super init]) {
        self.singleValue = [[NSString alloc] init];
    }
    return self;
}

@end

然后在需要使用单例的类import 这个单例类

Session *session = [Session GetInstance];

session.singleValue = @"好神奇阿!";

NSString *value = session.singleValue;

时间: 2024-10-11 23:19:51

IOS传值之单例传值的相关文章

iOS 页面间传值 之 单例传值 , block 传值

ios 页面间传值有许多,前边已经分享过属性传值和代理传值,今天主要说一下单例传值和 block 传值 单例传值:单例模式一种常用的开发的模式,单例因为在整个程序中无论在何时初始化对象,获取到的都是同一个对象,对象的属性相同,所以可以用来传值. block 传值 与 代理传值相似,主要用于第二个页面向第一个页面传值,block 传值具体步骤: 在第二个页面: 1.声明: block typedef void(^SendMessagerBlock) (NSString *str); 2.创建方法:

iOS基础之单例传值

在之前的界面通信中,我们讲诉了3种传值方法,现在我们提供一种更为方便的传值方法叫做单例传值. 单例的优点在于创建时是全局变量,可以在外部可以使用,没有逐级传值的局限性.但是单例传值会有内存问题,不能将单例进行内存释放,大量创建单例传值,会造成内存问题. 代码演示: #import "Handler.h" //创建单例 static Handler *handler = nil; @implementation Handler + (instancetype)shareInstance{

iOS 页面跳转传值,属性传值,代理传值,代码块传值,单例传值,通知传值

有时候我们在页面跳转的时候回传递相应的参数,如,你想把在第一个页面的文本框里的内容显示在第二个文本框中,或者你又想把第二个文本框中的内容改变之后到第一个页面的文本框中,所有,这个时候我们就要用到页面跳转传值 1.属性传值(正向传值) 属性传值是正向传值,只可以从前面一个页面传递到第二个页面,不可以从第二个页面传递到第一个页面 2.代理传值(逆向传值) 代理传值是逆向传值 代理传值步骤 代理传值 适用于 反向传值 1.1 创建协议 及协议方法 在反向传值的页面(SecondViewControll

属性传值,协议传值,block传值,单例传值四种界面传值方式

一.属性传值 对于属性传值而言,相对于其它的三种 方法来说,是最基础,最简单的一种 方法,但,属性传值 有很大的局限性,因为是适用于第一个界面向第二个界面传 值,第二个向第三个界面传值等等.N界面向N + 1界面传值.而在此基础上,必须知道跳转界面的明确位置及所要传的值的具体类型.在第二个界面中声明所要传值 类型的属性. @interface SecondViewController : UIViewController //声明一个字符串属性来保存第一个界面传过来的字符串内容 @propert

Handler(单例传值)

1 声明单例字符串类型,以copy类型 2 单例是类方法 3 返回值类型是 instancetype 4 单例不能释放 #import "Handler.h" static Handler *handler = nil;//需要把单例创建为全局变量 @implementation Handler + (instancetype)shareInstance{ //加锁的意思.多线程访问会出现 alloc多次.保证创建过程在同一时间内只允许一个线程对象访问 @synchronized(se

IOS开发模式——单例

单例的模式在网上有很多,今天发下我个人对单例模式的理解.整个app中只存在一个实例,也只会进行一次实例,在实例完成之后是不可以人释放的(当App关闭之后,等系统自己回收). 也就是说,如果我们写得某个类符合了上述条件,那么我们也可以称这个类为单例. 在非ARC的工程中,我们需要针对alloc,retain,copy等会增加retaincount的参数加以控制,对release和autorelease等减少retailcount的操作增加控制,以确保单一实例,绝不释放. 在ARC的工厂中,由于,内

iOS Dev (67) 单例的实现

iOS Dev (67) 单例的实现 博客:http://blog.csdn.net/prevention 作者:大锐哥 摘自:Learn iPhone and iPad cocos2d Game Development 实现 在 .m 文件里 static MyManager *sharedManager = nil; +(MyManager*) sharedManager { if (sharedManager == nil) { sharedManager = [[MyManager al

单例传值

// 在Ios应用中,不同view及应用中经常会有传值和变量共享,有几种方式可以实现: 1.extern方式 2.单例模式 3.delegate方式 单例模式顾名思义就是只有一个实例,它确保一个类只有一个实例,并且自行实例化并向整个系统提供这个实例.它经常用来做应用程序级别的共享资源控制.这个模式使用频率非常高,通过一个单例类,可以实现不同view之间的参数传递 //先建一个Model,继承与NSObject,然后创建单例 #import <Foundation/Foundation.h> @

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

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