TJLMemoization 1.0.0

TJLMemoization 1.0.0

测试已测试
语言语言 Obj-CObjective C
许可 MIT
发布最新发布2014年12月

未指明的 维护。



这只是对 Objective-C 方法进行简单缓存(这只是一个对“计算此值一次,缓存它并返回缓存值”的时髦说法)。为 NSObject 添加了一个类别,允许您对任何对象的任何实例上的任何选择器进行缓存。

使用方法

当您需要多次执行相同的计算密集型操作,但又不想重复计算结果时,缓存非常有用。一个很好的例子是 tableView 行高。在 tableView:heightForRowAtIndexPath: 中计算高度可能很昂贵,所以您只想要计算一次。将计算高度的函数进行缓存意味着高度只会计算一次,后续调用将返回缓存的值。

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    NSString *text = [[self memoizeAndInvokeSelector:@selector(paragraphsFromString:) withArguments:self.paragraphs, nil] objectAtIndex:(NSUInteger)indexPath.row];
    return [[self memoizeAndInvokeSelector:@selector(calculateHeightForText:atIndexPath:) withArguments:text, indexPath, nil] floatValue];
}

注意在这个例子中,我们还将 tableView 的数据源数组的计算进行了缓存,只是为了好玩。

安装

TJLMemoization 使用 cocoapods,所以只需将 pod 'TJLMemoization' 'version' 添加到您的 podfile 中,然后像平常一样安装。然后只需在您想使用它的任何地方使用 #import <TJLMemoization/TJLMemoization.h> 即可。

许可

如果您使用 TJLMemoization 并喜欢它,请随时告诉我,[email protected]。如果您有任何问题或想进行改进,请提交一个 pull request。

MIT 许可协议 (MIT) 版权所有 © 2014 Terry Lewis II

在此协议下,任何人无需支付任何费用即可免费获得本软件及其相关文档副本(以下简称为“软件”),可不受限制地使用软件,包括但不限于以下权利:使用、复制、修改、合并、发布、分发、转授权和/或销售软件的副本,并允许向软件提供方提供软件的人员做上述事情,前提是遵守以下条件

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

软件按“原样”提供,不提供任何形式的保证,无论是明示的、暗示的,还是与软件有关的任何明示或暗示的保证,包括但不限于适用性、特定目的和版权的保证。在任何事件中,作者或版权所有者不对以下任何索赔、损害或其他责任承担法律责任:基于合同、侵权或其他原因而产生的事故、损害或其他责任,无论是由于软件或其使用或与其他软件一起使用而产生的,或是由任何原因引起的,包括出于意外或故意。