文档章节

iOS 关于 单例

HelloNSLog
 HelloNSLog
发布于 2017/07/11 17:15
字数 180
阅读 4
收藏 0

 

 

系统单例:

UIApplication类sharedApplication方法

NSNotificationCenter(消息中心)

NSFileManager(文件管理)

 NSUserDefaults(持久化存储数据)

NSURLCache(请求缓存)

NSHTTPCookieStorage(应用程序cookies池)

UIAccelerometer类和sharedAccelerometer方法

NSBundle类和mainBundle方法

 

.h

#import <Foundation/Foundation.h>

 

@interface Single : NSObject

+(instancetype)shareSingle;

@end

 

 

.m

 

#import "Single.h"

static Single * _instance;

 

@implementation Single

+(instancetype)shareSingle{

    static dispatch_once_t onetoken;

    dispatch_once(&onetoken, ^{

        if(!_instance){

            

            _instance = [[self alloc]init];

            

        }

    });

    return _instance;

    

}

+ (instancetype)allocWithZone:(struct _NSZone *)zone{

    

    static dispatch_once_t onetoken;

    dispatch_once(&onetoken, ^{

        if (!_instance){

            

            _instance = [super allocWithZone:zone];

        }

    });

    return _instance;

}

- (id)copyWithZone:(NSZone *)zone{

    

    return _instance;

    

    

}

- (id)mutableCopyWithZone:(NSZone *)zone{

    

    return _instance;

}

@end

 

宏定义

MRC

-(oneway void)release\
{\
}\
\
-(instancetype)retain\
{\
    return _instance;\
}\
\
-(NSUInteger)retainCount\
{\
    return MAXFLOAT;\
}

 

// .m文件
#define WMSingletonM(name) \
static id _instance; \
 \
+ (instancetype)allocWithZone:(struct _NSZone *)zone \
{ \
    static dispatch_once_t onceToken; \
    dispatch_once(&onceToken, ^{ \
        _instance = [super allocWithZone:zone]; \
    }); \
    return _instance; \
} \
 \
+ (instancetype)shared##name \
{ \
    static dispatch_once_t onceToken; \
    dispatch_once(&onceToken, ^{ \
        _instance = [[self alloc] init]; \
    }); \
    return _instance; \
} \
 \
- (id)copyWithZone:(NSZone *)zone \
{ \
    return _instance; \
}

© 著作权归作者所有

共有 人打赏支持
HelloNSLog
粉丝 0
博文 7
码字总数 541
作品 0
高级程序员
私信 提问
Kotlin/Native v0.8 发布,提供更安全的并发编程支持

Kotlin/Native v0.8 已正式发布,该版本有以下值得关注的更新: 更安全的并发编程 扩展 stdlib 功能 更好的 iOS 开发支持 此外该版本还包含许多错误修复和优化。 GitHub 发布主页 https://gi...

局长
07/12
4.2K
11
[C++][IO]fstream用法

fstream用法 1. 打开文件 在fstream类中,有一个成员函数open(),就是用来打开文件的,其原型是: void open(const char* filename,int mode,int access); 参数: filename:  要打开的文件...

guitar_zp
2011/08/09
0
0
Knowledge-Reserve

Knowledge-Reserve ComputerOperatingSystem 编译 静态库&动态库(Linux) 静态链接&动态链接 内存 内联函数&宏 Static&Const 死锁 线程安全 线程同步 锁 DataStructure Programme 集约型&离散...

旭宝爱吃鱼
08/16
0
0
iOS奇思妙想之使用block替代通知

前言 iOS开发中,很多情况下会使用到通知,通知的好处很多,但是也有很多坑点,一旦没有管理好,就会造成很多莫名其妙的bug。既然通知使用不当很容易出现问题,那有没有什么办法来避免?经过...

季末微夏
08/17
0
0
10 个免费的移动 App 测试框架 (Android/iOS)

功能测试框架 #1: KIF for iOS KIF 的全称是 Keep It Functional ,来自 Square。该测试框架只支持 iOS,所有测试使用 Objective-C 编写,简化了 App 开发者使用。 #2: Fliptest – iOS 的应...

oschina
2013/09/20
15.4K
5

没有更多内容

加载失败,请刷新页面

加载更多

数字3为分隔

http://www.fly63.com/article/detial/221

西园里的猫
11分钟前
1
0
文本处理工具 grep awk sed完全解读

文本处理工具 grep awk sed完全解读 正则表达式单字符 1特定字符 : 某个具体的字符 'a' 2范围内字符 : [a-zA-Z] 3任意字符 : . // grep . file // 如果点放到中括号中[.] 或者用反斜杠'\.' ...

BakerZhu
11分钟前
1
0
Centos 7 JDK、Tomcat9 安装并配置

Centos 7 JDK、Tomcat9 安装并配置 我是一座离岛 关注 2017.04.10 08:16* 字数 699 阅读 3442评论 0喜欢 1 一、JDK 安装 1.安装wget yum -y install wget 2.下载,输入指令 wget --no-chec...

linjin200
17分钟前
0
0
Spring boot遇到的问题

2018年12月11日 Ver:2.0.2升级到2.1.1文件上传遇到问题 The method setMaxFileSize(String) from the type MultipartConfigFactory is deprecated 是不是就不用设置了?...

夏碌冬藏
26分钟前
1
0
Spark sql操作Hive

这里说的是最简便的方法,通过Spark sql直接操作hive。前提是hive-site.xml等配置文件已经在Spark集群配置好。 val logger = LoggerFactory.getLogger(SevsSpark4.getClass) def main(args:...

守望者之父
27分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部