iOS - 单例传值 (一)
2014-01-16 22:09
225 查看
单例只会对某个类实例化一次/单例类,对单例这个类实例化一次有且仅有一个对象
你单例初始化,只能初始化一次,然后你指向的对象,其实都是指向一个内存地址,也就是同一块内存,所以都是一样的/
so。。只能有一个对象,就是实例化的那个
(1)定义单例类singleton
[objc] view
plaincopy
![](https://code.csdn.net/assets/CODE_ico.png)
![](https://code.csdn.net/assets/ico_fork.svg)
#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
![](https://code.csdn.net/assets/CODE_ico.png)
![](https://code.csdn.net/assets/ico_fork.svg)
#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
![](https://code.csdn.net/assets/CODE_ico.png)
![](https://code.csdn.net/assets/ico_fork.svg)
#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
![](https://code.csdn.net/assets/CODE_ico.png)
![](https://code.csdn.net/assets/ico_fork.svg)
- (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
![](https://code.csdn.net/assets/CODE_ico.png)
![](https://code.csdn.net/assets/ico_fork.svg)
#import <UIKit/UIKit.h>
#import "singleton.h"
@interface OneViewController : UIViewController
@property (weak, nonatomic) IBOutlet UITextField *oneTextField;
@end
[objc] view
plaincopy
![](https://code.csdn.net/assets/CODE_ico.png)
![](https://code.csdn.net/assets/ico_fork.svg)
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
self.oneTextField.text = [singleton shareData].value;
}
效果图:
从第一个view输入你的数据,点击go
![](https://img-blog.csdn.net/20131121134739843?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2lsbGluZ3NlYWw=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
----
在第二个view得到你输入的数据:
![](https://img-blog.csdn.net/20131121134820343?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2lsbGluZ3NlYWw=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
-----
源代码:点击打开链接
还可以看看:点击打开链接 IOS单例模式(Singleton)
![](https://img-blog.csdn.net/20131121160959765)
共享这个类的实例变量,而非属性,属性是通过这个实例变量去获取的。
-----共享这个类的实例变量。。嗯啊。。ones这个对象。。。然后ones。value这个属性去拿到值
你单例初始化,只能初始化一次,然后你指向的对象,其实都是指向一个内存地址,也就是同一块内存,所以都是一样的/
so。。只能有一个对象,就是实例化的那个
(1)定义单例类singleton
[objc] view
plaincopy
![](https://code.csdn.net/assets/CODE_ico.png)
#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
![](https://code.csdn.net/assets/CODE_ico.png)
#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
![](https://code.csdn.net/assets/CODE_ico.png)
#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
![](https://code.csdn.net/assets/CODE_ico.png)
- (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
![](https://code.csdn.net/assets/CODE_ico.png)
#import <UIKit/UIKit.h>
#import "singleton.h"
@interface OneViewController : UIViewController
@property (weak, nonatomic) IBOutlet UITextField *oneTextField;
@end
[objc] view
plaincopy
![](https://code.csdn.net/assets/CODE_ico.png)
- (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 的本地化 Localization
- ios 笔试题 1
- MAC和IOS文件管理工具
- ios 开发file's owner以及outlet与连线的理解
- android和iOS平台的崩溃捕获和收集
- iOS extracts: Saving and Loading Game State
- IOS管理文件和目录
- iOS获取本地通信录、添加联系人信息
- 判断ios版本号 自定义宏
- iOS中CFUUIDRef,CFUUIDCreate声称唯一字符串
- iOS学习之sqlite的创建数据库,表,插入查看数据
- iOS 类别和扩展(Categories和Extensions)
- iOS 苹果真机鉴定
- iOS: WWDC 2014 之 swift 编程语言
- iOS App开发那些事:如何选择合适的人、规范和框架?
- iOS中相册-用一个tableView区分照片和video
- iOS支持arm64的支付宝SDK
- iOS —— NSRunLoop(二)关于NSTimer的理解
- iOS如何把所有界面的状态栏的字体颜色都设置为白色
- iOS UILabel添加背景图