iOS - 单例传值 (一)


单例只会对某个类实例化一次/单例类,对单例这个类实例化一次有且仅有一个对象

你单例初始化,只能初始化一次,然后你指向的对象,其实都是指向一个内存地址,也就是同一块内存,所以都是一样的/

so。。只能有一个对象,就是实例化的那个


(1)定义单例类singleton

[objc]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. #import <Foundation/Foundation.h>  
  2.   
  3. @interface singleton : NSObject  
  4.   
  5.   
  6. //@property (strong,nonatomic) UITextField *value;//最开始的时候把这个value定义为UITextField了,然后在init里面又没有初始化它,就取不到值。任何对象都要初始化它才能使用。  
  7. @property (strongnonatomicNSString *value;  
  8.   
  9. //+(id)shareData:  
  10. +(singleton *)shareData;  
  11.   
  12.   
  13. @end  

[objc]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. #import "singleton.h"  
  2.   
  3. @implementation singleton  
  4.   
  5. static singleton *singletonData = nil;  
  6. +(singleton *)shareData {  
  7.       
  8.       
  9.     static dispatch_once_t onceToken;  
  10.       
  11.     dispatch_once(&onceToken, ^{  
  12.         singletonData = [[singleton alloc] init];  
  13.     });  
  14.     
  15.     return singletonData;  
  16.     
  17. }  
  18.   
  19. -(id)init {  
  20.       
  21.     if (self = [super init]) {  
  22.          
  23.   
  24. //        self.value = [[UITextField alloc]init];  
  25.           
  26.     }  
  27.       
  28.     return self;  
  29.    
  30.       
  31. }  
  32.   
  33. @end  

(2) ViewController

[objc]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. #import <UIKit/UIKit.h>  
  2. #import "OneViewController.h"  
  3. #import "singleton.h"  
  4.   
  5. @interface ViewController : UIViewController  
  6.   
  7.   
  8. @property (weak, nonatomic) IBOutlet UITextField *qqTextfield;  
  9.   
  10. - (IBAction)go:(id)sender;  
  11.   
  12.   
  13. @end  

[objc]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. - (IBAction)go:(id)sender {  
  2.      
  3. //单例的使用  
  4.     singleton *oneS = [singleton shareData];  
  5. //    oneS.value.text = self.qqTextfield.text;  
  6.      oneS.value = self.qqTextfield.text;  
  7.       
  8.     OneViewController *oneVC = [[OneViewController alloc]init];  
  9.     [self presentViewController:oneVC animated:YES completion:nil];  
  10.     
  11.       
  12. }  

(3) OneViewController

[objc]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. #import <UIKit/UIKit.h>  
  2. #import "singleton.h"  
  3. @interface OneViewController : UIViewController  
  4.   
  5. @property (weak, nonatomic) IBOutlet UITextField *oneTextField;  
  6.   
  7.   
  8.   
  9. @end  

[objc]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. - (void)viewDidLoad  
  2. {  
  3.     [super viewDidLoad];  
  4.     // Do any additional setup after loading the view from its nib.  
  5.     self.oneTextField.text = [singleton shareData].value;  
  6.       
  7. }  

效果图:

从第一个view输入你的数据,点击go


----

在第二个view得到你输入的数据:


-----


源代码:点击打开链接



还可以看看:点击打开链接 IOS单例模式(Singleton)



共享这个类的实例变量,而非属性,属性是通过这个实例变量去获取的。

-----共享这个类的实例变量。。嗯啊。。ones这个对象。。。然后ones。value这个属性去拿到值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值