• iOS - 单例传值 (一)


    点击打开链接    iOS - 单例传值 (二)


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

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

    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这个属性去拿到值


  • 相关阅读:
    Java+Selenium元素定位的练习(三)
    Java+Selenium元素定位的八种方法(二)
    Java Selenium3 WebDriver启动火狐、Chrome、IE,Edge浏览器的方法(一)
    iOS userAgent
    如何强制视频横竖屏
    一些在开发中不曾注意的小知识,只是怕以后忘了,有迹可查
    多线程与并发
    谈谈那些年要把你弄疯的 bug
    底部导航上拉出现,下拉消失
    新闻详情页顶部的下拉放大与上拉的层叠效果
  • 原文地址:https://www.cnblogs.com/riasky/p/3436022.html
Copyright © 2020-2023  润新知