33.单例对象
来源:互联网 发布:大数据产品市场份额 编辑:程序博客网 时间:2024/04/29 23:56
单例。单:唯⼀性。例:实例对象。即使⽤某个类创建的对象是程序中唯⼀的实例对象。注:通常每次使⽤alloc创建的是不同的对象。
如果⼀个类只能创建⼀个对象,称为单例类。单例类可以是⼯具类,视图类,控制器类。
练习
在上⼀个练习的基础上,通过单例实现:将RootVC输⼊的字符串,
显⽰在secondVC的导航栏上。
在RootVC的根视图上,设置输⼊框。
定义单例类Mysington,定义NSString类型的属性str。
=================================
1.定义单例类Mysington,定义NSString类型的属性str。
在Mysington.h文件中
@interface Mysington : NSObject
@property (nonatomic,retain)NSString *str;
+ (Mysington *)shareHandle;
在Mysington.m文件中
/*
单例类:从程序开始运行 到程序结束 就只有一个对象 并且不用手动释放 ,随程序结束会自动释放
单例的应用:
1.单例传值(利用了程序运行期间就一个对象的特点)
2.可以封装操作类(数据操作)
*/
+ (Mysington *)shareHandle
{
定义了一个静态区的指针
static Mysington *handle = nil;
如果指针指向空的话
if (handle == nil) {
再堆区开辟一块空间(创建对象)
handle = [[Mysington alloc] init];
}
面试问题
为什么不去自动释放单例对象
如果选用自动释放的 再程序的运行期间可能会遇到系统未知的释放池 从而被释放 这样会出现内存问题
return handle;
}
在RootVC.m中实现点击跳转和传值
创建了一个UITextfield和UIButton
- (void)button:(UIButton *)button
{
获取传的值
UITextField field = (UITextField )[self.view viewWithTag:10];
单例对象
Mysington *sington = [Mysington shareHandle];
赋值单例对象的属性(传值使用)
sington.str = field.text;
SecondViewController *secondVC = [[SecondViewController alloc] init];
[self.navigationController pushViewController:secondVC animated:YES];
}
在SecondVC.m中
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
获取单例对象
Mysington *sington = [Mysington shareHandle];
self.navigationItem.title = sington.str;
}
0 0
- 33.单例对象
- 单例对象问题
- Scala 单例对象
- 单例对象
- Scala单例对象
- 单例对象创建
- 面向对象 单例
- Scala单例对象
- Class对象-单例
- 单例模式,单例对象
- 单例对象与单例模式
- java 单例对象同步
- 对象复制与单例
- 单例对象的创建
- Scala的单例对象
- iOS 单例对象创建
- 单例模式对象池
- 单例对象的释放
- WordPress主题制作(5)-定制WordPress登陆注册页面
- Eclipse构建Maven项目
- Spring、junit、mockito单元测试总结
- 明明的随机数
- Arduino通过HTTP上传Json数据,树莓派再GET回数据
- 33.单例对象
- C语言模块化程序设计概念理解
- 如何将一个浮点型转化为字符串型
- 3d游戏中剧情开启扭转镜头的实现
- 053-16 Which statement most accurately describes the implementation of a SQL Access Advisor recommen
- SuperMap iClient 7C for Flash 开发之线编辑
- 可视化zookeeper的事务日志
- 关于Raphael开发过程中的一些总结
- 递归创建并输出链表