Skip to content

Instantly share code, notes, and snippets.

@reddavis
Created January 15, 2014 09:09
Show Gist options
  • Save reddavis/8433078 to your computer and use it in GitHub Desktop.
Save reddavis/8433078 to your computer and use it in GitHub Desktop.
- (void)setObject:(id <NSCoding>)object forKey:(NSString *)key block:(TMCacheObjectBlock)block
{
if (!key || !object)
return;
dispatch_group_t group = nil;
TMMemoryCacheObjectBlock memBlock = nil;
TMDiskCacheObjectBlock diskBlock = nil;
if (block) {
group = dispatch_group_create();
dispatch_group_enter(group);
dispatch_group_enter(group);
memBlock = ^(TMMemoryCache *cache, NSString *key, id object) {
dispatch_group_leave(group);
};
diskBlock = ^(TMDiskCache *cache, NSString *key, id <NSCoding> object, NSURL *fileURL) {
dispatch_group_leave(group);
};
}
[_memoryCache setObject:object forKey:key block:memBlock];
[_diskCache setObject:object forKey:key block:diskBlock];
if (group) {
__weak TMCache *weakSelf = self;
dispatch_group_notify(group, _queue, ^{
TMCache *strongSelf = weakSelf;
if (strongSelf)
block(strongSelf, key, object);
});
#if !OS_OBJECT_USE_OBJC
dispatch_release(group);
#endif
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment