NSCache是一种很少使用的工具,实际上看起来非常有用.我创建了一个简单的实验,看看它是如何工作的,看起来它在低内存情况下不会自动驱逐数据(或者我做错了!)
- (void)viewDidLoad
{
_testCache = [[NSCache alloc] init];
// Allocate 600 MB of zeros and save to NSCache
NSMutableData* largeData = [[NSMutableData alloc] init];
[largeData setLength:1024 * 1024 * 600];
[_testCache setObject:largeData forKey:@"original_Data"];
}
- (IBAction)buttonWasTapped:(id)sender {
// Allocate & save to cache 300 MB each time the button is pressed
NSMutableData* largeData = [[NSMutableData alloc] init];
[largeData setLength:1024 * 1024 * 300];
static int count = 2;
NSString* key = [NSString stringWithFormat:@"test_data_%d", count++];
[_testCache setObject:largeData forKey:key];
NSMutableData* …
Run Code Online (Sandbox Code Playgroud) 有没有巧合的人知道如何清空我正在开发的iOS应用程序的缓存内存,在它进入后台的那一刻(applicationDidEnterBackground)?我已经调查了NSCache,但我仍然无法理解如何检索缓存基本上删除/释放它?
关于如何确定用户是否已滚动到 NSTableView 的末尾, 谢谢乔希。
有没有办法使用这种机制来实现提供某种无限滚动或分页的 NSTableView。
这个想法是告诉 NSTableView 加载一定数量的记录,比如一次加载 1k 条记录,然后当用户滚动到接近末尾时再拉取另外 1k 条记录,并且可能会忘记前 1k 条记录。
该模式在 Web 应用程序和 java 中得到了很好的定义/使用。最初仅加载可见的行数,当用户上下滚动表格时,其余的行将被异步拉取。
我对一些 obj-c 代码或有关如何编码的技巧感兴趣。我知道如何过滤/限制进入表视图的记录数量,但让我们暂时忽略它。
谢谢。