1,永远只分配一块内存来创建对象。

+(instanst)

static id instace = nil;

static dispatch_once_t onceToken;

dispatch_once(&onceToken,^{

instance = [super allocWithZone:zone];

}) ;

return instance;

2,提供一个类方法,返回内部唯一的一个对象(一个实例)

3,最好保证 init也只初始化一次(也可以不写,写比较好点。);

对于MRC还要重写release和autorelease;

使得release 和autorelease不做操作。不然释放了内存就再也创建不了了。

-(id)autorelease

{   return self;

}

-(id)retrain

return self;

-(NSUInteger)retainCount

{

return 1;

}

+(id) copyWithZone:(struct _NSZone *)zone

{      return _instance;

}

-(oneway void)release

}oneway 表示分布式对象,也不知道什么意思。

ARC和MRC通用的写法;

利用宏#if ! __has_feature(objc_arc)     来判断是否不是ARC环境    这个是宏处理,如果是否,里面的代码根本就不会生成。

[objc release];

#endif

最新文章

  1. Linux screen 命令
  2. MySQL表分区技术
  3. Abstract Factory(抽象工厂)模式
  4. IREP_SOA Integration程序注释语法Annotations(概念)
  5. [原创]EnterpriseDB测试key申请方法
  6. emWin显示文本字符-【worldsing笔记】
  7. 内存单元按字节编址,地址0000A000H~0000BFFFH共有几个存储单元
  8. Highcharts 本地导出图片和PDF asp.net mvc版
  9. Hadoop SequenceFile
  10. poj2386
  11. Jenkins + Maven + Ansible + Tomcat 实现JAVA代码自动部署
  12. Python读取文件时输入文件绝对路径报错
  13. java传输文件的简单方法
  14. windows 下使用 sc 添加创建exe服务;
  15. linux的shadow文件
  16. fastjson的@JSONField注解
  17. Java并发编程(一)线程定义、状态和属性
  18. numpy笔记—np.squeeze用法
  19. vim使用案例
  20. mysql 5.6 每天凌晨12:00 重置sequence表中的某个值

热门文章

  1. JAVA为什么要配置环境变量,怎样配置
  2. Codeforces 723c [贪心][乱搞]
  3. 转:Android Webview 加载外部html时选择加载本地的js,css等资源文件
  4. java事件监听
  5. Flash插件地址
  6. The listener supports no services解决一例
  7. myeclipse自动排版
  8. oracle client与ODAC的字符集
  9. Egret和Http请求 (Ajax、XMLHttpRequest、Post、Get)
  10. windows下gethostbyname 调用失败