SingleClass.m

#import <Foundation/Foundation.h>
@class SingleClass; static SingleClass *instance = nil; @interface SingleClass : NSObject <NSCopying>
+ (instancetype)shareInstance;
@end @implementation SingleClass
//类方法,获取单例对象
+ (instancetype)shareInstance{
if (!instance) {
instance = [[self alloc] init];
}
return instance;
}
//类方法,调用对象的alloc方法时返回已存在的单例
+ (instancetype)allocWithZone:(struct _NSZone *)zone{
if (!instance) {
instance = [super allocWithZone:zone];
}
return instance;
}
//copy时,返回已存在的单例
- (id)copyWithZone:(NSZone *)zone{
return instance;
}
//copy时,返回已存在的单例
- (id)copy{
return instance;
}
@end

main.m

int main(int argc, const char * argv[]) {
@autoreleasepool {
SingleClass *s1 = [SingleClass shareInstance];
SingleClass *s2 = [SingleClass shareInstance];
SingleClass *s3 = [[SingleClass alloc] init];
SingleClass *s4 = [s1 copy]; NSLog(@"%p",s1);
NSLog(@"%p",s2);
NSLog(@"%p",s3);
NSLog(@"%p",s4);
}
return ;
}

结果:

-- ::21.201 SingleDemo[:] 0x1001066e0
-- ::21.202 SingleDemo[:] 0x1001066e0
-- ::21.202 SingleDemo[:] 0x1001066e0
-- ::21.202 SingleDemo[:] 0x1001066e0

OC单例模式的实现的更多相关文章

  1. OC 单例模式

    OC 单例模式 概念 单例模式是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单例的特殊类.通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约 ...

  2. OC的单例模式的实现

    下面是在ARC,GCD下的单例模式实现: 头文件里申明类方法getInstance: #import <Foundation/Foundation.h> @interface Single ...

  3. OC学习篇之---单例模式

    在之前的一片文章中介绍了对象的拷贝相关知识:http://blog.csdn.net/jiangwei0910410003/article/details/41926531,今天我们来看一下OC中的单 ...

  4. OC编程之道-创建对象之单例模式

    一 何为单例singleton模式?(what) 保证一个类只有一个实例,并提供一个访问它的全局访问点. 二 何时使用单例模式?(where) 1类只能有一个实例,而且必须从一个为人熟知的访问点对其访 ...

  5. OC 设计模式——单例模式

    单例模式的作用:可以保证在程序运行过程,一个类只有一个实例,而且这个实例易于供外界访问.永远只分配一次内存给这个类.由于在调用alloc方法的时候,都会调用allocWithZone,所以要重写这个方 ...

  6. iOS开发——实用技术OC篇&单例模式的实实现(ACR&MRC)

    单例模式的实实现(ACR&MRC) 在iOS开发中单例模式是一种非常常见的模式,虽然我们自己实现的比较少,但是,系统却提供了不少的到来模式给我们用,比如最常见的UIApplication,No ...

  7. OC中使用单例模式

    static Config * instance = nil; +(Config *) Instance { @synchronized(self) { if(nil == instance) { [ ...

  8. 单例模式(oc)

    //主函数 main.m #import <Foundation/Foundation.h> #import "Singleton.h" int main(int ar ...

  9. Swift实现OC中的单例模式

    一.MySingle类 import Foundation class MySingle{ //定义单例的属性 var name:String? var age:Int? var height:Dou ...

随机推荐

  1. C(n,k)在n个不重复数中获得k个数

    //比如在数组a[]={1,7,89,87} 中k=2的时候 组合为 C(4,2)=6 package 再次开始; import java.util.ArrayList; //本次实现的是在n个不重复 ...

  2. HW2.2

    import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...

  3. openstack 制作大于2TB根分区自动扩容的CENTOS镜像

    制作镜像的时候默认分的是30G空间 qemu-img create -f raw centos.img 30G 看官网文档安装完系统需要安装cloud-init和clout-utils包,本人安装了完 ...

  4. POJ 3295 Tautology (构造题)

    字母:K, A, N, C, E 表示逻辑运算 字母:p, q, r, s, t 表示逻辑变量 0 或 1 给一个字符串代表逻辑表达式,如果是永真式输出tautology 否则输出not 枚举每个逻辑 ...

  5. [网络]关于公网IP的一些事

    家里的每一个路由器配置里,都有一个公网Ip,即下图中的IP地址

  6. 知识点整理之Java的Cookie操作

    创建Cookie // new一个Cookie对象,键值对为参数 Cookie cookie = new Cookie("key", "value"); //  ...

  7. Robots协议具体解释

    禁止搜索引擎收录的方法(robots.txt) 一.什么是robots.txt文件? 搜索引擎通过一种程序robot(又称spider),自己主动訪问互联网上的网页并获取网页信息.您能够在您的站点中创 ...

  8. “:Choose a destination with a supported architecture in order to run on this device.”

    我在编译从GitHub上clone下来的<TweeJump>时,出现如下错误:":Choose a destination with a supported architectu ...

  9. cocos2d-x设计模式发掘之五:防御式编程模式

    http://www.ityran.com/archives/2105 本文由子龙山人原创,泰然授权转载,转载请注明出处并通知子龙山人! 声明:防御式编程是提高程序代码质量的一种手段,它不能算是真正意 ...

  10. 关于Java安全的书

    关于Java安全的书http://automationqa.com/forum.php?mod=viewthread&tid=2831&fromuid=21