简单的单例演示
2015-12-01 20:56
357 查看
单例在设计模式书籍中是必须掌握的,OC语言的实现和C++几乎一样。
首先创建对象:
main.m文件:
输出:
2015-12-01 21:01:48.035 TestSingleCase[571:19680] obj1:<ObjectA: 0x100106e60>
2015-12-01 21:01:48.036 TestSingleCase[571:19680] obj2:<ObjectA: 0x100106e60>
2015-12-01 21:01:48.036 TestSingleCase[571:19680] name1:default name.
2015-12-01 21:01:48.037 TestSingleCase[571:19680] name2:default name.
2015-12-01 21:01:48.037 TestSingleCase[571:19680] name1:hello
2015-12-01 21:01:48.037 TestSingleCase[571:19680] name2:hello
首先创建对象:
// // ObjectA.h #import <Foundation/Foundation.h> @interface ObjectA : NSObject { NSString * _name; } @property (strong) NSString * name; /* 实现单例的函数 */ + (ObjectA *) sharedObjectA; @end
// // ObjectA.m #import "ObjectA.h" static ObjectA * manager = nil; @implementation ObjectA /* 使用name替代_name */ @synthesize name = _name; /* 单例的标准写法 */ + (ObjectA *) sharedObjectA { if (manager == nil) { manager = [[[self class] alloc] init]; } return manager; } /* 重写Init方法 */ - (id) init { self = [super init]; if (self) { //_name = @"default name."; self.name = @"default name."; } return self; } @end
main.m文件:
// // main.m /* 演示单例,可用于全局数据共享 */ #import <Foundation/Foundation.h> #import "ObjectA.h" int main(int argc, const char * argv[]) { @autoreleasepool { ObjectA *obj1 = [ObjectA sharedObjectA]; ObjectA *obj2 = [ObjectA sharedObjectA]; NSLog(@"obj1:%@", obj1); NSLog(@"obj2:%@", obj2); NSLog(@"name1:%@", obj1.name); NSLog(@"name2:%@", obj2.name); obj1.name = @"hello"; NSLog(@"name1:%@", obj1.name); NSLog(@"name2:%@", obj2.name); } return 0; }
输出:
2015-12-01 21:01:48.035 TestSingleCase[571:19680] obj1:<ObjectA: 0x100106e60>
2015-12-01 21:01:48.036 TestSingleCase[571:19680] obj2:<ObjectA: 0x100106e60>
2015-12-01 21:01:48.036 TestSingleCase[571:19680] name1:default name.
2015-12-01 21:01:48.037 TestSingleCase[571:19680] name2:default name.
2015-12-01 21:01:48.037 TestSingleCase[571:19680] name1:hello
2015-12-01 21:01:48.037 TestSingleCase[571:19680] name2:hello
相关文章推荐
- Java Enum
- 块设备性能调优
- 代码原则
- 《leetCode》:Subsets
- (第十一周项目1)二叉树算法验证
- C-020.变量的修饰符 short、long、longlong、unsigned
- 银行卡归属地查询
- 超简单c语言小程序
- android studio导入eclipse项目方式及相关问题解决办法
- LeetCode 141 Linked List Cycle
- db2数据库错误代码DB2 sqlcode=-766 sqlstate 57016 原因码 "7"错误
- UE4常见的Actor类型
- 南大软院大神养成计划-css布局
- 深入分析JavaWeb Item2 -- Tomcat服务器学习和使用
- LeetCode题解——Sudoku Solver
- 【english】 just do it
- linux 用户、用户组不能是全数字
- 2015.12.01 软件安装 命令行操作 vi
- libGDX执行DesktopLauncher提示Couldn't load file: badlogic.jpg
- java基础之Gui编程和反射