【OC加强】辛格尔顿和[NSFileManager defaultMagager]以及其他设计模式
我们在工作中使用文件NSFileManager上课时间,创建发现1对象,此2同样的对象地址:
NSFileManager *file1=[NSFileManager defaultManager];
NSFileManager *file2=[NSFileManager defaultManager];
NSLog(@"%@,%@",file1,file2);
核心是:这个类的defaultManager方法利用的是一种单例模式,即仅仅要这个程序还在执行。那么整个执行期间仅仅能存在1个单例,即1个实例对象。
怎样实现的呢?我们模拟一下。
(1)首先在Person.h中声明一个方法。
#import <Foundation/Foundation.h> @interface Person : NSObject +(Person *)defaultPerson;
@end
(2)然后在Person.m中实现(关键)
#import "Person.h" @implementation Person
//利用静态变量创建单例模式
//静态变量是仅仅有当整个程序结束执行时才会release释放
static Person * person=nil; //该函数的作用是,当类调用该方法时,始终仅仅返回同一个对象,即仅仅创建1个对象。假设创建其它对象,它们也是相同地址
+(Person *)defaultPerson{
if (person==nil) {
person=[[self alloc]init];
}
return person;
}
@end
(3)然后就能够使用了。比方在main.m中
#import <Foundation/Foundation.h>
#import "Person.h" int main(int argc, const char * argv[]) { @autoreleasepool {
Person *p1=[Person defaultPerson];
Person *p2=[Person defaultPerson];
//打印的两个地址是同样的,这就是单例模式的应用
NSLog(@"%@,%@",p1,p2);
}
return 0;
}
除了单例设计模式之外。还有几种设计模式,总结:
——组合模式(聚合模式)。就是一个对象里面包括了另外一个对象。
——单例模式:如上。
——策略模式:用在封装变化点。比方我们定义一个有两个数+1个运算符号的方法,运算符号能够是+、-、*、/。所以这个封装变化点就在运算符号这边。我们能够用一个block方法来实现,这就是一种策略模式。
——向上抽象:就是protocol协议设计模式
——享元设计模式:就是NSString创建一个abc后,再创建一个abc时它会到池子中找到假设有就会直接取出来原本的abc,这相当于NSString原则游泳池。
版权声明:本文博客原创文章。博客,未经同意,不得转载。
【OC加强】辛格尔顿和[NSFileManager defaultMagager]以及其他设计模式的更多相关文章
- 一道题看懂OC的文件管理:NSFileManager,计算文件包含内存大小
计算文件夹下所有文件的大小 // 查看错误信息 __autoreleasing NSError *error; // 文件管理对象 NSFileManager *manager = [NSFileMa ...
- Node.js自定义对象事件监听与发射
一.Node.js是以事件驱动的,那我们自定义的一些js对象就需要能监听事件以及发射事件.在Node.js中事件使用一个EventEmitter对象发出,该对象在events模块中.它应该是使用观察者 ...
- OC NSFileManager(文件路径操作)
OC NSFileManager(文件路径操作) 初始化 NSFileManager * fm = [NSFileManager defaultManager]; 获取当前目录 [fm current ...
- iOS - OC NSFileManager 文件管理
前言 @interface NSFileManager : NSObject @interface NSFileHandle : NSObject <NSSecureCoding> NSF ...
- OC语言--NSFileManager& NSFileHandle
1.关于文件的介绍 ->什么是文件: 文件概念, 广义文件. 狭义文件(磁盘文件). 文件常见的使用操作(可用命令行演示文件操作的使用场景). ->什么是路径: 简单来说就是,在系统中,要 ...
- OC中NSFileManager
NSFileManager介绍 NSFileManager是用来管理文件系统的 它可以用来进行常见的文件\文件夹操作(拷贝.剪切.创建等) NSFileManager使用了单例模式singleton ...
- 归档NSKeyedArchiver解归档NSKeyedUnarchiver与文件管理类NSFileManager (文件操作)
========================== 文件操作 ========================== 一.归档NSKeyedArchiver 1.第一种方式:存储一种数据. // 归档 ...
- iOS开发 - OC - 实现本地数据存储的几种方式一
iOS常用的存储方式介绍 在iOS App开发过程中经常需要操作一些需要持续性保留的数据,比如用户对于App的相关设置.需要在本地缓存的数据等等.本文针对OC中经常使用的一下存储方式做了个整理. 常用 ...
- IOS学习之路--OC的基础知识
1.项目经验 2.基础问题 3.指南认识 4.解决思路 ios开发三大块: 1.Oc基础 2.CocoaTouch框架 3.Xcode使用 -------------------- CocoaTouc ...
随机推荐
- C# 计算字符串/文件的哈希值(MD5、SHA)
原文 C# 计算字符串的哈希值(MD5.SHA) 已做修改 一.关于本文 本文中是一个类库,包括下面几个函数: /// 1)计算32位MD5码(大小写):Hash_MD5_32 /// 2)计算16位 ...
- 【c语言】模拟库函数strstr
// 模拟库函数strstr #include <stdio.h> #include <assert.h> const char* my_strstr(const char * ...
- Linux下精确控制时间的函数
Linux下精确控制时间的函数 在测试程序接口运行时间的时候,常用time,gettimeofday等函数,但是这些函数在程序执行的时候是耗费时间的,如果仅仅测试时间还行,但是如果程序中用到时间控制类 ...
- Codeforces Jzzhu and Sequences(圆形截面)
# include <stdio.h> int f[10]; int main() { int x,y,n,j; while(~scanf("%d%d%d",& ...
- Android系统各版本号及代号
Android系统各版本号及代号 版本 版本号代号 公布日期 API Android 1.0 阿童木 1 Android 1.1 发条机器人 2008.9 2 Android 1.5 纸杯蛋糕 200 ...
- swift 进阶笔记 (一) —— 可选型
swift定义可选型的时候,要用"?",可是在swift的标准库中,可选型的定义是Optional<T>,"? "仅仅是个简写形式. var myN ...
- windows phone 墓碑化(9)
原文:windows phone 墓碑化(9) 几个术语的理解: 名称 说明 ; App ap = (App)Application.Current; // 构造函数 ...
- SQL Server :理解DCM页
原文:SQL Server :理解DCM页 我们已经讨论了各种不同的页,包括数据页.GAM与SGAM页.PFS页,还有IAM页.今天我们来看下差异变更页(Differential Change Map ...
- WCF异常传播
传送至客户端的异常肯定是CommunitionException类型,包括一般的通信过程中出错而引发的CommunicationException类型,System.IdentityModel.Sel ...
- 【iOS开发-22】navigationBar导航栏,navigationItem建立:获取导航栏中的基本文本和button以及各种跳跃
(1)navigationBar导航栏可以被看作是self.navigationController一个属性导航控制器,它可以由点直接表示self.navigationController.navig ...