您的位置:首页 > 移动开发 > IOS开发

iOS - 单例传值 (一)

2014-01-16 22:09 225 查看
单例只会对某个类实例化一次/单例类,对单例这个类实例化一次有且仅有一个对象

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

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

(1)定义单例类singleton

[objc] view
plaincopy





#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  

[objc] view
plaincopy





#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

[objc] view
plaincopy





#import <UIKit/UIKit.h>  

#import "OneViewController.h"  

#import "singleton.h"  

  

@interface ViewController : UIViewController  

  

  

@property (weak, nonatomic) IBOutlet UITextField *qqTextfield;  

  

- (IBAction)go:(id)sender;  

  

  

@end  

[objc] view
plaincopy





- (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

[objc] view
plaincopy





#import <UIKit/UIKit.h>  

#import "singleton.h"  

@interface OneViewController : UIViewController  

  

@property (weak, nonatomic) IBOutlet UITextField *oneTextField;  

  

  

  

@end  

[objc] view
plaincopy





- (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 单例传值