OC-单例模式

       单例模式 

          一.介绍:

                     单例模式的作用是解决“应用中只有一个实例”的一类问题。在一个ios的生命周期中 有时候我们只需要某个类的一个实例,例如当应用程序启动时,应用的状态有UIApplication类的一个实例维护,这个实例代表了整个“应用程序对象”,它只能是一个实例,其作用是实现应用程序中一些共享资源的访问和状态保持

        二.代码展示:

#import <Foundation/Foundation.h>

@interface SingerExample : NSObject

+(SingerExample *)shareManager;

@property(nonatomic,strong)NSString *singerexample;

@end


#import "SingerExample.h"

@implementation SingerExample

@synthesize singerexample = _singerexample;

static SingerExample *Singerexample = nil;

+(SingerExample*)shareManager

{

    static dispatch_once_t once;

    dispatch_once(&once,^{

        Singerexample = [[self alloc]init];

    });

    return Singerexample;

    

}

@end

      其中static SingerExample *Singerexample是静态变量,类方法为+(SingerExample*)shareManager。shareManager方法采用了GCD(Grand Central Dispatch)技术。这是一种基于C语言的多线程访问技术。上述代码中, dispatch_once就是GCD提供的,它的作用是在真个应用程序生命周期中只执行一次代码块({......})。dispatch_once函数能够记录该代码块是否被调用过,

    dispatch_once函数不仅意味着代码仅会被执行一次,而且还意味着此运行还是线程同步的,也就是说,当我们使用了dispatch_once函数时,就不需要使用诸如@synthesized之类的语句

三、应用:

     在cocoa touch框架中 , 有UIApplication、NSUserDefault和NSNotionCtion等单例。另外,NSfilManager和NSBundle类虽然属于Cocoa框架内容,但是也可以在Cocoa Touch框架中使用(Cocoa框架中的单例类有NSFileManager NSWorkspace和NSApplication等)

1.UIApplication类的实例提供了应用程序的集中控制点来保持应用的状态。UIApplication实例总是分配给应用程序的委托对象(UIPpplication),通过应用程序委托对象来响应低内存、应用启动、后台运行和应用终止事件。在HellO Word 案例中 APPDekegate就是这个应用程序的委托对象,它实现了UIAPPlicationDelegate协议。

   UIAPPlicalition类有很多方法和属性,下面我们重点介绍其中几个。

   1)shareApplication方法。创建和获得UIAPPlication实例的静态方法

   2)idleTimerDisable属性。设定和获得“控件时间禁止”状态,系统不会锁定屏幕。开启这项设置需要谨慎,它会使你的应用程序比较耗电

   3)-openURL方法:可以打开一些内置的IOS应用,其中包括打开浏览器、打开Goole地图、拨打电话、发送短信和发送email等

打开浏览器的代码如下:

    (1)打开百度浏览器

      NSURL *url = [NSURL URLWithString:@"https://www.baidu.com"];

      [[UIApplication sharedApplication]openURL:url];

    (2)打开google地图浏览器

       NSString *searchQuery = @"清华大学";

       searchQuery = [searchQuery                     stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

       NSString *urlString = [NSString stringWithFormat:@"http://maps.google.com/map?q=%@",searchQuery];

      [[UIApplication sharedApplication]openURL:[NSURL URLWithString:urlString]];

  其中: NSString中的 stringByAddingPercentEscapesUsingEncoding:方法将字符串转换为URL编码,例如“%E%B8%85%E5%8D%E5%A4%A7%E5%AD%A6”是清华大学的URL编码。

    (3)拨打电话时,苹果官方要求使用该方法调用内置拨号程序,实例代码如下:

       [[UIApplication sharedApplication]openURL:[NSURL URLWithString:@"10086"]];

     (4)发送短信时,苹果官方要求使用该方法调用内置发送短信程序,实例代码如下:

       [[UIApplication sharedApplication]openURL:[NSURL URLWithString:@"sms:10086"]];

     (5)发送邮件时,这种方式可以发送简单的不带附件的email,实例代码如下:

       [[UIApplication sharedApplication]openURL:[NSURL URLWithString:@"mailto://eorient@sina.com"]];

 2.NSUserDefaults:

      单例类NSUserDefaults可以很方便地读取应用设置项目。+ standardUserDefaults方法是创建和获得

NSUserDefaults实例的静态方法

 3.NSFileManager:

      提供了访问文件系统的通用操作,可以定位、创建、复制文件和文件夹在ios 5和mac osx v10.7之后,还可以用管理存储在icloud上的数据。+defaultManager方法是创建和获得NSFileManager实例的方法。

 4.NSNotficationcenter:

     单例类 NSNotficationcenter提供了信息攻博通知,采用观察者模式的通知机制。+NSDefaultCenter方法是创建按和获得NSNotficationcenter实例的共享方法

 5.NSBundle:

     提供了动态加载(或卸载)可执行代码、定位子源文件、资源本地化和访问文件系统功能+mainBunble方法是创建和获得NSBundle实例的共享方法

  


    






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值