【原】ios下比较完美的单例模式,已验证
网上关于ios单例模式实现的帖子已经很多了,有很多版本,里面有对的也有不对的。我在使用过程中很难找到一个比较完美的方法,索性自己写一个吧,经过项目验证是比较合理的一个版本。
static PRAutoLoginView *s_sharedInstance = nil;
+ (PRAutoLoginView *)shareInstance
{
@synchronized(self)
{
if (s_sharedInstance == nil) {
s_sharedInstance = [[[self class] hideAlloc] init];
}
}
return s_sharedInstance;
} #pragma mark --
#pragma mark singleton apis
+ (id)hideAlloc
{
return [super alloc];
} + (id)alloc//彻底屏蔽掉alloc函数
{
NSAssert( == , @"[PRAutoLoginView]please use +shareInstance instead of alloc!");
return nil;
} + (id)new
{
return [self alloc];
} + (id)allocWithZone:(struct _NSZone *)zone
{
@synchronized(self)
{
if (s_sharedInstance == nil) {
s_sharedInstance = [super allocWithZone:zone];
return s_sharedInstance;
}
}
return nil;
} - (id)copyWithZone:(NSZone *)zone
{
NSAssert( == , @"[PRAutoLoginView]copy is not permitted!");
[self retain];
return self;
} - (id)mutableCopyWithZone:(NSZone *)zone
{
return [self copyWithZone:zone];
}
这里要注意的一点时,allocWithZone时默认调用的,即使你没有显式地调用alloc或者allocWithZone,因此需要重载
【原】ios下比较完美的单例模式,已验证的更多相关文章
- 【mark】linux 终端命令行下的快捷键(自己已验证所有)
说明: \c + a:表示ctrl+a \a + a:表示alt+a 命令列表: 1 移动: \c + a:将光标移到行首 \c + e:将光标移到行尾 \c + f:将光标向后(右)移动一个字符 \ ...
- ios下,对于position:fixed支持不完美的额解决方案
ios下,当有文本框时,会调用输入法,而这个时候,定位(fixed)在底部的东西,就会被弹上例,离底部有段距离,这算是个坑了. 我的解决方案是这样的. 除了定位在底部的元素外,用一个大div把其他元素 ...
- ios下微信浏览器如何唤醒app?app已上架应用宝
android下可以通过在应用宝微下载地址后面加参数&android_schema='应用schema'来实现,ios下如何实现? ios下微信浏览器如何唤醒app?app已上架应用宝 > ...
- iOS下原生与JS交互(总结)
iOS开发免不了要与UIWebView打交道,然后就要涉及到JS与原生OC交互,今天总结一下JS与原生OC交互的两种方式. JS调用原生OC篇(我自己用的方式二,简单方便) 方式一 第一种方式是用JS ...
- 解决ios下的微信打开的页面背景音乐无法自动播放
后面的项目发现,还有两个坑,需要注意下: ·本文的解决方案的核心是利用了 微信/易信 在ready的时候会有个 WeixinJSBridgeReady/YixinJSBridgeReady事件,通过监 ...
- iOS下的 Fixed + Input 调用键盘的时候fixed无效问题解决方案
做touchweb开发的时候,做头疼的是,电脑上面时候好的,有些手机上面也是好的,个别手机和浏览器出现问题,对于这些,只能慢慢调试,找问题. 今天说一下比较老的IOS的问题,那就是"iOS下 ...
- iOS下使用SHA1WithRSA算法加签源码
首先了解一下几个相关概念,以方便后面遇到的问题的解决: RSA算法:1977年由Ron Rivest.Adi Shamirh和LenAdleman发明的,RSA就是取自他们三个人的名字.算法基于一个数 ...
- 原 IOS之NSValue整理
原 IOS之NSValue整理 发表于2年前(2013-02-28 23:02) 阅读(1974) | 评论(0) 5人收藏此文章, 我要收藏 赞3 IOS NSValue 值对象(value o ...
- 原 iOS面试题收集
原 iOS面试题收集 发表于2年前(2013-07-22 13:47) 阅读(369) | 评论(0) 4人收藏此文章, 我要收藏 赞0 听云性能监测产品App.Server.CDN免费试用,绑定 ...
随机推荐
- C#调用Java类
C#调用Java类 (2011-01-07 14:02:05) 转载▼ 分类: Java学习 1. 在Eclipse中新建名称为hello的java project,此工程仅包含一个文件hell ...
- Dewey – 标记和搜索 Chrome 浏览器书签
Dewey 是一个 Chrome 应用程序,用于标记,搜索和排序你的 Chrome 浏览器书签.借助 Dewey,您可以添加自定义标签,生成你的书签截图,灵活快捷的方式进行搜索和排序. 您可能感兴趣的 ...
- iOS-布局-Masonry
一.说明:demo中的举例视图介绍 UIView *_blackView; 作为父视图 UIView *_redView; 与父视图内边距为10 ...
- JAVA jdbc(数据库连接池)学习笔记(二) SQL注入
PS:今天偶然间发现了SQL的注入...所以就简单的脑补了一下,都是一些简单的例子...这篇写的不怎么样...由于自己没有进行很深的研究... 学习内容: 1.SQL注入的概念... 所谓SQL注 ...
- [课程设计]Scrum日记本项目进度
Sprint 1时间:11.14-11.23 冲刺一这一阶段中主要实现的是界面和互交(已实现这两个功能) 燃尽图: 项目进度: 第一阶段:现阶段已经实现界面和互交. 第二阶段:进行填入信息,并记录日期 ...
- SQL 批量字符串替换
--在SQL SERVER中批量替换字符串的方法 update table[表名] set Fields[字段名]=replace(Fields[字段名],'被替换原内容','要替换成的内容') up ...
- Google判断广告点击作弊的几种方式和数据
Google判断广告点击作弊的几种方式和数据. 作弊广告点击的CTR数据太高网上有研究说如果CTR值大于了10%的站被干掉的可能性很高,他们会被单独拿出来分析.一般来说低于6-7%的CTR是安全红线 ...
- Worm.Win32.DownLoader.ns病毒主进程新式输入法注入分析(IME Inject)
1.病毒会在system32目录生成一个以tmp结尾的随机数命名的文件. 2.然后挂钩HOOK本进程空间的imm32.dll导出的ImmLoadLayout函数和ntdll.dll导出的ZwQuery ...
- C# 生成BMP图片
;i<;i++) { Bitmap bmp=new Bitmap(this.pictureBox1.Image); Graphics g=Graphics.FromImage((Image)bm ...
- C语言回滚(三)-指针
#include <stdio.h>#include <stdlib.h> //& 地址运算符 //* 间接运算符 // *的作用 当*后面跟一个指针名或地址的时候, ...