iOs 单例模式的定义,实现、步骤

单例模式就是一个类在系统中最多只有一个实例对象,并通过一个全局的入口对这个实例对象进行访问。

对于共享的资源,实现多个对象去封装是不必要的,不光占用系统资源,还有可能造成冲突,所以一般使用单例模式。

#import "DSSingletonObject.h"

@implementation DSSingletonObject

+ (DSSingletonObject *)defaultObject {
    static DSSingletonObject *defaultObjectInstance = nil;

    if (!defaultObjectInstance)
        defaultObjectInstance = [[super allocWithZone:NULL] init];

    return defaultObjectInstance;
}

+ (id)allocWithZone:(struct _NSZone *)zone {
    return [self defaultObject];
}@end

  

#import <Foundation/Foundation.h>

@interface DSSingletonObject : NSObject

// 写法一
+ (instancetype)defaultObject;

// 写法二:线程安全,iOS4之后常用这种
+ (DSSingletonObject *)sharedObject;

@end

  

int main(int argc, const char * argv[])
{
    DSSingletonObject *obj = [DSSingletonObject defaultObject];
    NSLog(@"%p", obj);

    DSSingletonObject *obj2 = [[DSSingletonObject alloc] init];
    NSLog(@"%p", obj2);

    DSSingletonObject *obj3 = [[DSSingletonObject alloc] init];
    NSLog(@"%p", obj3);

    return 0;
}

  

时间: 2024-08-06 00:18:41

iOs 单例模式的定义,实现、步骤的相关文章

IOS单例模式

单例模式是一种常见的软件设计模式. 通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源. 如果希望系统中某个类的对象只能存在一个,单例模式是最好的解决反感. IOS中最常见的单例就是UIApplication 单例的实现步骤: 1.重写allocWithZone方法 allocWithZone方法是对象分配内存空间时,最终会调用的方法,重写该方法,保证只会分配个内存空间. 2.建立shaerdXXX类方法,便于其他类调用 + (id)all

iOS重用宏定义

iOS 多快好省的宏(转) 原文地址:http://my.oschina.net/yongbin45/blog/150149 // 字符串: #ifndef nilToEmpty #define nilToEmpty(object) (object!=nil)?object:@"" #endif #ifndef formatStringOfObject #define formatStringOfObject(object) [NSString stringWithFormat:@&q

iOS之宏定义#define

最基本的宏定义用法 #define aaa  bbb 表示用aaa替换bbb的内容. 宏作用范围 宏的作用范围是在当前文件内, 如果需要作用于其他类(如在类b调用类a已定义宏),那么需要在类b引入类a的头文件(a.h). 如果需要作用于整个工程,可以定义一个类如Config.h,在该类定义好需要的宏,然后在工程的XXX_Prefix.pch文件 #import "Config.h" 在Config.h中 #define aaa  bbb 在XXX_Prefix.pch文件 中 #ifd

iOS开发真机调试步骤

iOS真机调试实现可以有两种方法,一种是登陆Developer Center手动创建证书,创建配置文件,我下面着重介绍这种方法:另外一种是通过Xcode注册Apple ID,这个这里没有细节介绍.一.Certificates部分1.点击Certificate菜单下的All 按钮,然后如果需要添加证书,点击右侧上方的+号添加证书.2.证书分成多种,主要有产品证书和开发者证书两类,选择iOS App Development签署开发app的证书就可以,点击continue 进入下一页面3.再这里会提示

在Visual Studio 2013/2015上使用C#开发Android/IOS安装包和操作步骤

原文:在Visual Studio 2013/2015上使用C#开发Android/IOS安装包和操作步骤 Xamarin 配置手册和离线包下载 http://pan.baidu.com/s/1eQ3qw8a 具体操作: 安装前提条件 1. 安装Visual Studio 2013,安装过程省略,我这里安装的windows10 + vs2013 with update 4. 2. 安装Java SDK,按照Next一步步安装,此处省略,如下图: 3. 安装Android SDK:因为在线安装的访

ios真机调试详细步骤

•真机调试的主要步骤 1.登录开发者主页 2.生成cer证书:cer是一个跟电脑相关联的证书文件,让电脑具备真机调试的功能 3.添加App ID:调试哪些app? 4.注册真机设备:哪台设备需要做真机调试? 5.生成MobileProvision文件:结合2.3.4生成一个手机规定文件 6.导入cer.MobileProvision文件 ● •最终会得到2个文件 ØCer文件:让电脑具备真机调试的功能 ØMobileProvision文件:哪台设备.哪些app.哪台电脑需要做真机调试? 真机调试

iOS 使用宏定义函数和代码块

iOS使用宏定义函数和代码块 今天在开发过程中碰到一个问题:就是父类中要向外发送通知,然后子类中或者其他类中来接收它.当然一般是把它写到类方法中去,但是有个问题,就是如果调用的类不是它的子类,就不能直接调用,当然也可以采用静态方法实现,我这里主要是想用宏定义来实现,下面我分别介绍使用宏定义函数和定义代码块的方式进行,废话不多说了,直接上代码: 使用宏定义函数实现 //定义 #define SendNotification @"SendNotification" #define send

WPF-自定义实现步骤条控件

原文:WPF-自定义实现步骤条控件 步骤条实现的效果: 步骤条控件是在listbox的基础上实现的. 一. xaml代码: <Window.Resources> <convert1:StepListBarWidthConverter x:Key="StepListStepWidthConverter" /> <ControlTemplate x:Key="NormalItemTemplate" TargetType="List

iOS单例模式(Singleton)

单例模式的意思就是只有一个实例.单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.这个类称为单例类. 1.单例模式的要点: 显然单例模式的要点有三个:一是某个类只能有一个实例:二是它必须自行创建这个实例:三是它必须自行向整个系统提供这个实例. 2.单例模式的优点: 1.实例控制:Singleton 会阻止其他对象实例化其自己的 Singleton 对象的副本,从而确保所有对象都访问唯一实例. 2.灵活性:因为类控制了实例化过程,所以类可以更加灵活修改实例化过程 iOS中的