IVYPool 0.2

IVYPool 0.2

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT
发布最后发布2015年11月

Håvard Fossli 维护。



  • 作者:
  • Håvard Fossli

一个线程安全的 iOS 仓库工厂。按需存储、获取和创建对象。

安装

pod 'IVYPool'
在 Swift 中导入
import IVYPool
在 Objective-C 中导入
#import <IVYPool/IVYPool.h>

API

...
@property (nonatomic, copy, readwrite) id (^createBlock)(void);
@property (nonatomic, assign, readwrite) NSUInteger capacity;
...

/*
 The instances you add, get and create should all be of this class or subclass
 */
- (instancetype)initWithClass:(Class)aClass;

/*
 Create an instance using `createBlock`
 */
- (id)create;

/*
 Add instance to the pool.
 It will immediately be accsible with `getLast` or `takeLast`
 */
- (BOOL)add:(id)instance;

/*
 Auto creates if none found - never returns nil
 */
- (id)takeFirstIn;
- (id)takeLastIn;
- (id)takeFirstInPreferablyMatching:(BOOL(^)(id instance))filter;
- (id)takeLastInPreferablyMatching:(BOOL(^)(id instance))filter;

/*
 Does not auto create and may return nil
 */
- (id)getFirstIn;
- (id)getLastIn;
- (id)getFirstInMatching:(BOOL(^)(id instance))filter;
- (id)getLastInMatching:(BOOL(^)(id instance))filter;
- (id)getFirstInPreferablyMatching:(BOOL(^)(id instance))filter;
- (id)getLastInPreferablyMatching:(BOOL(^)(id instance))filter;

/*
 Creates object using `createBlock`
 */
- (void)fill;
- (void)fillTo:(NSUInteger)mark;

/*
 Removes objects from the pool
 */
- (NSArray *)drain;
- (NSArray *)drainHalf;
- (NSArray *)drainTo:(NSUInteger)mark;

术语

如果 ab 被添加到池中。 firstIn 指的是 a,而 lastIn 指的是 b

例子

在大多数情况下,我建议创建一个简单的外观。在这种情况下,IVYPagerReusePool 拥有一个 IVYPool,并创建了一个清晰简洁的 API。

@interface IVYPagerReusePool : NSObject

- (void)registerPageClass:(Class)pageClass forReuseIdentifier:(NSString *)reuseIdentifier;
- (Class)pageClassForReuseIdentifier:(NSString *)reuseIdentifier;

- (IVYArticlePage *)getAnyPageWithPath:(IVYPagerPath *)path;
- (IVYArticlePage *)getAnyPageWithIdentifier:(NSString *)identifier;
- (IVYArticlePage *)getAnyPageWithReuseIdentifier:(NSString *)reuseIdentifier;

- (NSArray <IVYArticlePage *> *)drainTo:(NSUInteger)mark;

- (BOOL)add:(IVYArticlePage *)page;

@end

Agens | Digital craftsmanship