Objective-C语言——单例模式
来源:互联网 发布:bl国产网络剧 编辑:程序博客网 时间:2024/05/23 23:33
Student.h
#import <Foundation/Foundation.h>@interface Student : NSObject//在要被设计成单例的类的.h 文件中声明一个构造单例方法+(Student *)shateInstance;@end
Student.m
#import "Student.h"static Student *st = nil;@implementation Student//实现该方法+(Student *)shateInstance{ if (st == nil) { st = [[Student alloc] init]; } return st;}//为了防止 alloc 或 new 创建新的实例变量+(id)allocWithZone:(struct _NSZone *)zone{ /* 关于@synchronized(self) @synchronized 的作用是创建一个互斥锁,保证此时没有其他线程对 self 对象进行修改 这个是 Objective-C 的锁令牌,防止 self 对象在同一时间被其他线程访问,起到线程保护作用,一般在公用变量的时候使用,例如单例模式 或者 操作类的 static 变量中使用 */ @synchronized(self) { if (st == nil) { st = [super allocWithZone:zone]; } } return st; }//为了防止 copy 产生出新的对象,需要实现 NSCopying 协议-(id)copyWithZone:(NSZone *)zone{ return self;}@end
ViewController.m
#import "ViewController.h"#import "Student.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; /* 设计模式(用来解决编程某些特定问题)————单例模式 单例模式 什么时候使用单例模式? 在一个工程中,一些类只需要一个实例变量,我们就可以将这些设计成单例模式 单例模式的作用? 当一个‘类 A’被设计成单例模式时,由‘类 A’构造出得实例对象之于其他类来讲为全局实例对象,即在每一个类中由'A'构造出实例对象,都未相同的对象。 单例模式的实现思路:一个类只能创建一个实例和一个获得该实例的方法。 */ Student *st1 = [Student shateInstance]; Student *st2 = [[Student alloc] init]; Student *st3 = [st2 copy]; if (st2 == st3) { NSLog(@"st2 == st3"); } else { NSLog(@"st2 != st3"); } }- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}@end
运行结果
2016-01-02 17:09:42.051 OC_LX_10_01[2103:41264] st2 == st3
0 0
- Objective-C语言——单例模式
- Objective-c语言_单例模式
- Objective-C——单例模式
- Objective —C 单例模式 Singleton
- IOS-3-Objective-C语言:单例设计模式
- Objective —C 的单例模式 Singleton实现
- Objective C--单例模式
- Objective C--单例模式
- Objective C 单例模式
- Objective C--单例模式
- Objective-C单例模式
- Objective C--单例模式
- Objective-C单例模式
- Objective-C 单例模式
- Objective-C 单例模式
- Objective-C:单例模式
- Objective-C 单例模式
- Objective-C_语言_单例模式
- POJ-2566Bound Found(尺取法)(好题)
- Java的异常、断言、日志和调试
- POJ-2739Sum of Consecutive Prime Numbers(尺取法+埃拉托斯特尼筛法)
- CentOS 6.5上inotify-tools使用方法
- Android Design Support Library 的 代码实验——几行代码,让你的 APP 变得花俏
- Objective-C语言——单例模式
- android中使用xml里的array资源
- GitHub 使用(Win7 下Git Bash)
- 华为桌面云使user用户具有管理权限的模板封装(链接克隆)
- 数据库的约束
- dyld: Library not loaded:
- Oracle11g 客户端连接出现的问题解决方案
- 迁移邮件数据
- 数组 选择法排序