【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原则游泳池。

版权声明:本文博客原创文章。博客,未经同意,不得转载。

时间: 2024-11-13 10:40:21

【OC加强】辛格尔顿和[NSFileManager defaultMagager]以及其他设计模式的相关文章

【OC加强】单例模式与[NSFileManager defaultMagager]以及其他设计模式

我们在使用文件操作NSFileManager类的时候,发现创建1个对象,这2个对象地址相同: NSFileManager *file1=[NSFileManager defaultManager]; NSFileManager *file2=[NSFileManager defaultManager]; NSLog(@"%@,%@",file1,file2); 核心是:这个类的defaultManager方法利用的是一种单例模式,即只要这个程序还在运行,那么整个运行期间只能存在1个单例

黑马程序员——oc语言学习心得----NSFileManager

黑马程序员——oc语言学习心得----NSFileManager -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 自己总结了下NSFileManager的简单几个用法 : // 首先要创建文件管理器 NSFileManager *fm=[NSFileManager defaultManager]; 1,判断文件是否存在 fileExistsAtPath: 2,判断文件是否是目录 fileExistsAtPath: 3, 判断文件是否可读

【OC学习-23】NSFileManager和NSFileHandle的注意事项和常用操作归纳

说明: a:NSFileHandle只能打开现成的文件,所以如果是新文件则需要NSFileManager先创建新文件: b:打开一个文件就后,就需要关闭一个文件: c:根据不同的要求可能要设定不同的偏移量(即光标所在位置),可以通过移动到开头或结尾,也可以先获取当前位置然后增加和减少多少字节来移动: d:文件路径是NSString对象,可以用stringByAppendingPathComponent+文件全称方法构造一个完整的文件路径: e:往文件里面写的内容是NSData,如果是其他的格式则

黑马程序员--OC基础--NSFileManager用法深入

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- /* NSFileManager用法深入一 用于文件访问:获取文件.文件夹的属性和子目录的信息 */ 1 #import <Foundation/Foundation.h> 2 3 int main() { 4 @autore

[OC Foundation框架 - 23] 文件管理

A. 目录管理 1 NSFileManager*manager = [NSFileManagerdefaultManager];//单例模式 2 3 // 1.获取文件属性 4 NSString *path = @"/Users/hellovoidworld/desktop/oc/test20141121.txt"; 5 NSFileManager *manager = [NSFileManagerdefaultManager]; // 单例模式 6 NSDictionary *att

Swift之旅:2.完成计算器,初探MVC设计模式

斯坦福大学公开课:iOS8 网易空开课地址链接:斯坦福大学公开课:IOS8开发 github上字幕链接:字幕 百度网盘资源下载链接:百度网盘 1.计算器完成 ①回车键及相关的代码 //定义一个数组,用来当做栈保存数据使用 var openStack = Array<Double>(); //enter用来执行进栈操作 @IBAction func enter() { //设置重新开始输入字符串 userIsInTheMiddleOfTypingANumber = false //将value进

Node.js自定义对象事件监听与发射

一.Node.js是以事件驱动的,那我们自定义的一些js对象就需要能监听事件以及发射事件.在Node.js中事件使用一个EventEmitter对象发出,该对象在events模块中.它应该是使用观察者设计模式来实现把事件监听器添加到对象以及移除,之前写OC那块的时候也有些观察者设计模式,在OC中也经常用到:通知中心.KVO,也很容易理解. .addListener(eventName,callback):将回调函数附加到对象的监听器中.当eventName的事件被触发时,回调函数被放置在事件队列

raywenderlich-iOS设计模式Part 1/2【译】

原文地址:http://www.raywenderlich.com/86477/introducing-ios-design-patterns-in-swift-part-1 Update 04/22/2015: Updated for Xcode 6.3 and Swift 1.2. Update note: This tutorial was updated for iOS 8 and Swift by Vincent Ngo. Original Post by Tutorial team

OC中NSFileManager类 和 copy一些用法

一:NSFileManager的使用 1, 概念:用来管理文件系统,它可以用来进行常见的文件\文件夹的操作(拷贝.剪切.创建等) NSFileManager 使用了单例模式singleton 使用defaultManager方法可以获取那个单例对象 2, 1>常见判断 //1,判断文件或文件夹是否存放 // NSFileManager *fileManager = [NSFileManager defaultManager]; // NSString *path = @"/Users/ll