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


原文地址:https://www.cnblogs.com/riasky/p/3436022.html