A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 啊康 中级黑马   /  2014-4-21 22:12  /  766 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在单例设计模式中,我可以理解复写alloc方法,copy方法
但是为什么要复写retain,release,retaincoun,autorelease方法。
这些方法好像没有创建对象的功能?为什么要复写呢?
求解惑!!

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

1 个回复

倒序浏览
复写retain和release,autorelease方法就是为了防止引用计数器加1,或者是减1.
因为引用计数器retainCount加1或是减1,都是证明类在内存中又被创建了一个或者释放掉了一块内存空间。
所以retain和autorelease被复写成return self,release被复写成空都是防止引用计数器的异常情况下的改变。
复写retainCount是为了确定单例中对象的唯一性。这些复写虽然从表现上与创建对象无关,但是确保了单例模式的设计健壮性,使单例的设计实现更稳定更安全。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马