单例只会对某个类实例化一次/单例类,对单例这个类实例化一次有且仅有一个对象
你单例初始化,只能初始化一次,然后你指向的对象,其实都是指向一个内存地址,也就是同一块内存,所以都是一样的/
so。。只能有一个对象,就是实例化的那个
(1)定义单例类singleton
#import <Foundation/Foundation.h> @interface singleton : NSObject //@property (strong,nonatomic) UITextField *value;//最开始的时候把这个value定义为UITextField了,然后在init里面又没有初始化它,就取不到值。任何对象都要初始化它才能使用。
@property (strong, nonatomic) NSString *value; //+(id)shareData:
+(singleton *)shareData; @end
#import "singleton.h" @implementation singleton static singleton *singletonData = nil;
+(singleton *)shareData { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{
singletonData = [[singleton alloc] init];
}); return singletonData; } -(id)init { if (self = [super init]) { // self.value = [[UITextField alloc]init]; } return self; } @end
(2)
ViewController
#import <UIKit/UIKit.h>
#import "OneViewController.h"
#import "singleton.h" @interface ViewController : UIViewController @property (weak, nonatomic) IBOutlet UITextField *qqTextfield; - (IBAction)go:(id)sender; @end
- (IBAction)go:(id)sender { //单例的使用
singleton *oneS = [singleton shareData];
// oneS.value.text = self.qqTextfield.text;
oneS.value = self.qqTextfield.text; OneViewController *oneVC = [[OneViewController alloc]init];
[self presentViewController:oneVC animated:YES completion:nil]; }
(3)
OneViewController
#import <UIKit/UIKit.h>
#import "singleton.h"
@interface OneViewController : UIViewController @property (weak, nonatomic) IBOutlet UITextField *oneTextField; @end
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
self.oneTextField.text = [singleton shareData].value; }
效果图:
从第一个view输入你的数据,点击go
----
在第二个view得到你输入的数据:
-----
源代码:点击打开链接
还可以看看:点击打开链接 IOS单例模式(Singleton)
共享这个类的实例变量,而非属性,属性是通过这个实例变量去获取的。
-----共享这个类的实例变量。。嗯啊。。ones这个对象。。。然后ones。value这个属性去拿到值
iOS - 单例传值 (一)的更多相关文章
-
iOS 单例传值遇见问题
单例模式的意思就是只有一个实例.单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.这个类称为单例类. 1.单例模式的要点: 显然单例模式的要点有三个:一是某个类只能有一个实例: ...
-
iOS 页面间传值 之 单例传值 , block 传值
ios 页面间传值有许多,前边已经分享过属性传值和代理传值,今天主要说一下单例传值和 block 传值 单例传值:单例模式一种常用的开发的模式,单例因为在整个程序中无论在何时初始化对象,获取到的都是同 ...
-
iOS 页面跳转传值,属性传值,代理传值,代码块传值,单例传值,通知传值
有时候我们在页面跳转的时候回传递相应的参数,如,你想把在第一个页面的文本框里的内容显示在第二个文本框中,或者你又想把第二个文本框中的内容改变之后到第一个页面的文本框中,所有,这个时候我们就要用到页面跳 ...
-
iOS多页面传值方式之单例传值singleton
// 要实现单例传值,那就必须得新建一个类做为单例 提供创建该类对象的类方法(因为是要在alloc开辟内存空间后赋值).所有在.h文件中声明该方法 + (instancetype)defaultUII ...
-
【iOS 单例设计模式】底层解析与运用
[iOS 单例设计模式]底层解析与运用 一.单例设计名词解释: (官方解释)单例模式确保一个类只有一个实例,自行提供这个实例并向整个系统提供这个实例.(形象比喻)程序 — 公司 单例实例 - 管理 ...
-
属性传值,协议传值,block传值,单例传值四种界面传值方式
一.属性传值 对于属性传值而言,相对于其它的三种 方法来说,是最基础,最简单的一种 方法,但,属性传值 有很大的局限性,因为是适用于第一个界面向第二个界面传 值,第二个向第三个界面传值等等.N界面向N ...
-
ios 单例的再次理解
单例模式 在建模的时候,如果这个东西确实只需要一个对象,多余的对象都是无意义的,那么就考虑用单例模式.比如定位管理(CLLocationManager),硬件设备就只有一 个,弄再多的逻辑对象 ...
-
四大传值详解:属性传值,单例传值,代理传值,block传值
一:属性传值 传值情景:从前一个页面向后一个页面传值 a.在后一个页面,根据传值类型和个数,写属性 b.在前一个页面, 为属性赋值 c.在后一个页面, 使用值 例如: 第一个视图: #import & ...
-
iOS单例创建的一点疑惑
线程安全的单例常用写法, +(AccountManager *)sharedManager{ static AccountManager *defaultManager = nil; disptch_ ...
随机推荐
-
CYQ.Data V5 从入门到放弃ORM系列:框架的优势
前言: 框架开源后,学习使用的人越来越多了,所以我也更加积极的用代码回应了. 在框架完成了:数据库读写分离功能 和 分布式缓存功能 后: 经过三天三夜的不眠不休,终于完成框架第三个重量级的功能:自动化 ...
-
一次线上http接口调用不通相关的解决过程
2016-05-25 08:58:34 昨天线上小白系统因为调用外部http接口,超时不释放,导致页面反应很慢,时间一长,报502错误. 上网查了下,502错误是因为服务对于客户的请求没有得到及时的反 ...
-
Entity Framework 摘记
1.设置隔离级别 var transactionOptions = new System.Transactions.TransactionOptions(); transactionOptions.I ...
-
使用Immutable优化复制注意事项
这是Orleans中对于序列化检查类型是否支持Orleans内置的高速序列化时,使用Immutable<>包装和类型声明时,有ImmutableAttribute,效果是一样的.所以无需重 ...
-
CentOS7.0重置Root的密码
CentOS7.0重置Root的密码 首先进入开启菜单,按下e键进入编辑现有的内核,如下图所示 然后滚动列表,找到ro,将它替换成rw,并加上init=/sysroot/bin/sh,最终变为如下图 ...
-
NDK(1)配置ndk,含eclipse,Android Studio1.5.1
现在的ndk配置已经非常简单,如果看到要cygwin的请关闭. 1,Eclipse 添加ndk linux,mac ,windows 相似, a.下载 ndk并解压, b.在eclipse的andro ...
-
eclipse使用lomnok无效
把下载好的jar包去掉版本号放到与eclipse.exe同级目录 修改sts.ini或者eclipse.ini 在最后面加上: -javaagent:lombok.jar-Xbootclasspath ...
-
安卓手机H5底部fix定位,呼出键盘底部会上浮解决办法
<script type="text/javascript">var windowInnerHeight = window.innerHeight; //获取当前浏览器 ...
-
yii第二步
yii第二步: main.php 'urlManager'=>array('urlFormat'=>'path','rules'=>array('game/guess/<g:\ ...
-
(2)Mac环境搭建
创建HelloWorld项目 将刚才下载的压缩包解压到你指定的文件夹里. 进入到目录cocos2d-x-3.2alpha0/tools/cocos2d-console/bin/cocos.py 打开终 ...