Objective-C实现对象复用

在实际编程中,有许多对象创建时的代价比较昂贵,我们应该尽量避免产生新的实例,然而,我们又会频繁的使用到这些对象。那我们应该如何才能既尽量少的实例化新对象又能物尽其用多次使用呢?这篇文章中的使用对象复用池的方法或许是一个能做到以上几点、行之有效的提高程序性能的方法。
摘要由CSDN通过智能技术生成

思想

用两个NSDictionary分别记录对象的标识符与其类对象的关联和标识符与可用对象队列的关联。这样就可以使用标识符来从对象复用池里获取对象以及回收对象了。

根据标识符从对象复用池里获取对象时,首先查看标识符对应的可用对象队列中是否还有可用的对象。如果没有,就根据标识符找到对象的类对象并使用类对象创建一个对象然后返回,如果有就从队列中取出并返回。

根据标识符回收对象时,首先要根据标识符获取对应的可用对象队列,如果能获取到队列,就把对象加入到队列中,如果获取不到,就抛出异常。

当然,在使用对象复用池之前还需要一一注册类对象以及标识符,以建立标识符和类对象以及标识符和可用对象序列的关联。

此后,通过扩展或集成这个类,就可以实现更有用的功能。比如说UIScrollViewView的复用。

代码

下面是实现的代码:
SSPClassesReusePool.h

#import <Foundation/Foundation.h>

@protocol SSPClassesReusePoolProtocal <NSObject>

@required

/**
 *  注册类欲使用复用池的实例。
 *
 *  @param cls       实例的类对象。
 *  @param identifer 实例的标识符。
 */
- (void)registerClass:(Class)cls forIdentifer:(NSString *)identifer;
/**
 *  获取对象实例。
 *
 *  @param identifer 注册时使用的标识符。
 *
 *  @return 对象实例。
 */
- (id)classForIdentifer:(NSString *)identifer;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值