博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Objective-C 真正意义的单实例()
阅读量:6239 次
发布时间:2019-06-22

本文共 1327 字,大约阅读时间需要 4 分钟。

////  Singleton.h//  singleton////  Created by leondun on 11-4-20.//  Copyright 2011 leondun. All rights reserved.// #import 
@interface Singleton : NSObject { } +(Singleton *)getInstance; @end
#import "Singleton.h" static Singleton * instance = nil; @interface Singleton(privateMethods) -(void)realRelease; @end  @implementation Singleton //获取单例+(Singleton *)getInstance{    @synchronized(self) {        if (instance == nil) {            [[self alloc] init];            }    }    return instance;} //唯一一次alloc单例,之后均返回nil+ (id)allocWithZone:(NSZone *)zone{    @synchronized(self) {        if (instance == nil) {            instance = [super allocWithZone:zone];            return instance;        }    }    return nil;} //copy返回单例本身- (id)copyWithZone:(NSZone *)zone{    return self;} //retain返回单例本身- (id)retain{    return self;} //引用计数总是为1- (unsigned)retainCount{    return 1;} //release不做任何处理- (void)release{   } //autorelease返回单例本身- (id)autorelease{    return self;} //真release私有接口-(void)realRelease{      [super release];} //-(void)dealloc{      //⋯⋯      printf("举例:在此处做一些单例结束时的收尾处理/n");       [super dealloc];} @end //程序结束时析构静态c++类对象garbo,//在Garbo类的析构函数中释放instancestruct Garbo{      ~Garbo(){[instance realRelease];}};static Garbo garbo;

转载于:https://www.cnblogs.com/kiss007/archive/2012/06/16/2551818.html

你可能感兴趣的文章
再次升级!阿里云Kubernetes日志解决方案
查看>>
聊聊Dubbo - Dubbo可扩展机制实战
查看>>
mysql如何分表mysql分表的3种方法比较优点缺点
查看>>
linux平台上的扫描技术Nmap
查看>>
ACMjlb入门题 1034
查看>>
ansible-playbook批量部署安装tomcat
查看>>
ansible安装配置(一)
查看>>
好程序员web前端分享js剪切板Clipboard.js 使用
查看>>
centos6.5下使用lnmp架构安装nextcloud云盘
查看>>
ubuntu 删除旧内核
查看>>
TT/TC安装和简单使用
查看>>
Android利用drawable文件夹自定义控件背景、样式
查看>>
深入oracle 12c数据库备份与恢复(优化RMAN性能、Oracle flashback技术)
查看>>
【华为ACL】禁止某网段上网
查看>>
Linux启动的顺序说明
查看>>
5月15日
查看>>
DDoS***&防御[精品文章100篇]
查看>>
要学学好习一下mysql了
查看>>
linux 当路由器使用
查看>>
Exchange系列—配置传输规则
查看>>