1、变更推送为阿里云推,清除云信IM以及推送内容;
2、消息页面全新改版; 3、部分微小Bug修复
This commit is contained in:
Executable
+139
@@ -0,0 +1,139 @@
|
||||
//
|
||||
// YYCache.m
|
||||
// YYCache <https://github.com/ibireme/YYCache>
|
||||
//
|
||||
// Created by ibireme on 15/2/13.
|
||||
// Copyright (c) 2015 ibireme.
|
||||
//
|
||||
// This source code is licensed under the MIT-style license found in the
|
||||
// LICENSE file in the root directory of this source tree.
|
||||
//
|
||||
|
||||
#import "YYCache.h"
|
||||
#import "YYMemoryCache.h"
|
||||
#import "YYDiskCache.h"
|
||||
|
||||
@implementation YYCache
|
||||
|
||||
- (instancetype) init {
|
||||
NSLog(@"Use \"initWithName\" or \"initWithPath\" to create YYCache instance.");
|
||||
return [self initWithPath:@""];
|
||||
}
|
||||
|
||||
- (instancetype)initWithName:(NSString *)name {
|
||||
if (name.length == 0) return nil;
|
||||
NSString *cacheFolder = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject];
|
||||
NSString *path = [cacheFolder stringByAppendingPathComponent:name];
|
||||
return [self initWithPath:path];
|
||||
}
|
||||
|
||||
- (instancetype)initWithPath:(NSString *)path {
|
||||
if (path.length == 0) return nil;
|
||||
YYDiskCache *diskCache = [[YYDiskCache alloc] initWithPath:path];
|
||||
if (!diskCache) return nil;
|
||||
NSString *name = [path lastPathComponent];
|
||||
YYMemoryCache *memoryCache = [YYMemoryCache new];
|
||||
memoryCache.name = name;
|
||||
|
||||
self = [super init];
|
||||
_name = name;
|
||||
_diskCache = diskCache;
|
||||
_memoryCache = memoryCache;
|
||||
return self;
|
||||
}
|
||||
|
||||
+ (instancetype)cacheWithName:(NSString *)name {
|
||||
return [[self alloc] initWithName:name];
|
||||
}
|
||||
|
||||
+ (instancetype)cacheWithPath:(NSString *)path {
|
||||
return [[self alloc] initWithPath:path];
|
||||
}
|
||||
|
||||
- (BOOL)containsObjectForKey:(NSString *)key {
|
||||
return [_memoryCache containsObjectForKey:key] || [_diskCache containsObjectForKey:key];
|
||||
}
|
||||
|
||||
- (void)containsObjectForKey:(NSString *)key withBlock:(void (^)(NSString *key, BOOL contains))block {
|
||||
if (!block) return;
|
||||
|
||||
if ([_memoryCache containsObjectForKey:key]) {
|
||||
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
|
||||
block(key, YES);
|
||||
});
|
||||
} else {
|
||||
[_diskCache containsObjectForKey:key withBlock:block];
|
||||
}
|
||||
}
|
||||
|
||||
- (id<NSCoding>)objectForKey:(NSString *)key {
|
||||
id<NSCoding> object = [_memoryCache objectForKey:key];
|
||||
if (!object) {
|
||||
object = [_diskCache objectForKey:key];
|
||||
if (object) {
|
||||
[_memoryCache setObject:object forKey:key];
|
||||
}
|
||||
}
|
||||
return object;
|
||||
}
|
||||
|
||||
- (void)objectForKey:(NSString *)key withBlock:(void (^)(NSString *key, id<NSCoding> object))block {
|
||||
if (!block) return;
|
||||
id<NSCoding> object = [_memoryCache objectForKey:key];
|
||||
if (object) {
|
||||
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
|
||||
block(key, object);
|
||||
});
|
||||
} else {
|
||||
[_diskCache objectForKey:key withBlock:^(NSString *key, id<NSCoding> object) {
|
||||
if (object && ![_memoryCache objectForKey:key]) {
|
||||
[_memoryCache setObject:object forKey:key];
|
||||
}
|
||||
block(key, object);
|
||||
}];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)setObject:(id<NSCoding>)object forKey:(NSString *)key {
|
||||
[_memoryCache setObject:object forKey:key];
|
||||
[_diskCache setObject:object forKey:key];
|
||||
}
|
||||
|
||||
- (void)setObject:(id<NSCoding>)object forKey:(NSString *)key withBlock:(void (^)(void))block {
|
||||
[_memoryCache setObject:object forKey:key];
|
||||
[_diskCache setObject:object forKey:key withBlock:block];
|
||||
}
|
||||
|
||||
- (void)removeObjectForKey:(NSString *)key {
|
||||
[_memoryCache removeObjectForKey:key];
|
||||
[_diskCache removeObjectForKey:key];
|
||||
}
|
||||
|
||||
- (void)removeObjectForKey:(NSString *)key withBlock:(void (^)(NSString *key))block {
|
||||
[_memoryCache removeObjectForKey:key];
|
||||
[_diskCache removeObjectForKey:key withBlock:block];
|
||||
}
|
||||
|
||||
- (void)removeAllObjects {
|
||||
[_memoryCache removeAllObjects];
|
||||
[_diskCache removeAllObjects];
|
||||
}
|
||||
|
||||
- (void)removeAllObjectsWithBlock:(void(^)(void))block {
|
||||
[_memoryCache removeAllObjects];
|
||||
[_diskCache removeAllObjectsWithBlock:block];
|
||||
}
|
||||
|
||||
- (void)removeAllObjectsWithProgressBlock:(void(^)(int removedCount, int totalCount))progress
|
||||
endBlock:(void(^)(BOOL error))end {
|
||||
[_memoryCache removeAllObjects];
|
||||
[_diskCache removeAllObjectsWithProgressBlock:progress endBlock:end];
|
||||
|
||||
}
|
||||
|
||||
- (NSString *)description {
|
||||
if (_name) return [NSString stringWithFormat:@"<%@: %p> (%@)", self.class, self, _name];
|
||||
else return [NSString stringWithFormat:@"<%@: %p>", self.class, self];
|
||||
}
|
||||
|
||||
@end
|
||||
Reference in New Issue
Block a user