单例传值

//

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

1.extern方式

2.单例模式

3.delegate方式

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

//先建一个Model,继承与NSObject,然后创建单例

#import <Foundation/Foundation.h>

@interface SharedData : NSObject

#pragma mark ----创建单例的方法

//起名习惯: share + 类名

+ (instancetype)shareData;

@property (nonatomic, strong)NSString *inputNssting;

@end

#import "SharedData.h"

@implementation SharedData

static SharedData *data = nil;

//单例类使用此方法,创建单例对象

+ (instancetype)shareData

{

if (data == nil) {

//如果没有创建对象,是哟高sharedata 创建新的对象

data = [[SharedData alloc] init];

}

//如果创建了就直接返回创建了的对象

return data;

}

@end

//使用方法

//这就是某一个控制器的button绑定事件的赋值,想在哪个控制器拿到直接赋值就可以呦,非常简单。

- (void)button1Action:(UIButton *)sender

{

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

[SharedData shareData].inputNssting  = self.textField.text;

SecondViewController *secondVC = [[SecondViewController alloc] init];

[self.navigationController pushViewController:secondVC animated:YES];

}

时间: 2024-08-06 17:13:14

单例传值的相关文章

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{

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

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

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

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

Handler(单例传值)

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

IOS传值之单例传值

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

iOS 单例传值

写一个类  起作用是 传值 #import <Foundation/Foundation.h> @interface singleton : NSObject +(singleton *)shareData; @property (strong, nonatomic) NSString *value; @end #import "singleton.h" @implementation singleton static singleton *singletonData =

iOS 页面间几种传值方式(属性,代理,block,单例,通知)

第二个视图控制器如何获取第一个视图控制器的部分信息 例如 :第二个界面中的lable显示第一个界面textField中的文本 这就需要用到属性传值.block传值 那么第一个视图控制器如何获的第二个视图控制器的部分信息 例如:第一个界面中的lable显示第二个界面textField中的文本 这就需要使用代理传值 页面间传值有八大传值方式,下面我们就简单介绍下页面间常用的五种传值方式: (一)属性传值 第二个界面中的lable显示第一个界面textField中的文本 首先我们建立一个RootVie

iOS 页面间几种传值方式(属性,代理,block,单例,通知)

iOS 页面间几种传值方式(属性,代理,block,单例,通知) 姜糖水 2015-05-03 52 阅读 iOS 移动开发 第二个视图控制器如何获取第一个视图控制器的部分信息 例如 :第二个界面中的lable显示第一个界面textField中的文本 这就需要用到属性传值.block传值 那么第一个视图控制器如何获的第二个视图控制器的部分信息 例如:第一个界面中的lable显示第二个界面textField中的文本 这就需要使用代理传值 页面间传值有八大传值方式,下面我们就简单介绍下页面间常用的五