From 3e8437ae559487362fae3525beb79c534c213a51 Mon Sep 17 00:00:00 2001
From: 单军华
Date: Thu, 12 Jul 2018 13:44:34 +0800
Subject: [PATCH] bug修复和功能优化

---
 screendisplay/Pods/YYCache/YYCache/YYMemoryCache.h |  213 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 213 insertions(+), 0 deletions(-)

diff --git a/screendisplay/Pods/YYCache/YYCache/YYMemoryCache.h b/screendisplay/Pods/YYCache/YYCache/YYMemoryCache.h
new file mode 100644
index 0000000..ded8440
--- /dev/null
+++ b/screendisplay/Pods/YYCache/YYCache/YYMemoryCache.h
@@ -0,0 +1,213 @@
+//
+//  YYMemoryCache.h
+//  YYCache <https://github.com/ibireme/YYCache>
+//
+//  Created by ibireme on 15/2/7.
+//  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 <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ YYMemoryCache is a fast in-memory cache that stores key-value pairs.
+ In contrast to NSDictionary, keys are retained and not copied.
+ The API and performance is similar to `NSCache`, all methods are thread-safe.
+ 
+ YYMemoryCache objects differ from NSCache in a few ways:
+ 
+ * It uses LRU (least-recently-used) to remove objects; NSCache's eviction method
+   is non-deterministic.
+ * It can be controlled by cost, count and age; NSCache's limits are imprecise.
+ * It can be configured to automatically evict objects when receive memory 
+   warning or app enter background.
+ 
+ The time of `Access Methods` in YYMemoryCache is typically in constant time (O(1)).
+ */
+@interface YYMemoryCache : NSObject
+
+#pragma mark - Attribute
+///=============================================================================
+/// @name Attribute
+///=============================================================================
+
+/** The name of the cache. Default is nil. */
+@property (nullable, copy) NSString *name;
+
+/** The number of objects in the cache (read-only) */
+@property (readonly) NSUInteger totalCount;
+
+/** The total cost of objects in the cache (read-only). */
+@property (readonly) NSUInteger totalCost;
+
+
+#pragma mark - Limit
+///=============================================================================
+/// @name Limit
+///=============================================================================
+
+/**
+ The maximum number of objects the cache should hold.
+ 
+ @discussion The default value is NSUIntegerMax, which means no limit.
+ This is not a strict limit���if the cache goes over the limit, some objects in the
+ cache could be evicted later in backgound thread.
+ */
+@property NSUInteger countLimit;
+
+/**
+ The maximum total cost that the cache can hold before it starts evicting objects.
+ 
+ @discussion The default value is NSUIntegerMax, which means no limit.
+ This is not a strict limit���if the cache goes over the limit, some objects in the
+ cache could be evicted later in backgound thread.
+ */
+@property NSUInteger costLimit;
+
+/**
+ The maximum expiry time of objects in cache.
+ 
+ @discussion The default value is DBL_MAX, which means no limit.
+ This is not a strict limit���if an object goes over the limit, the object could 
+ be evicted later in backgound thread.
+ */
+@property NSTimeInterval ageLimit;
+
+/**
+ The auto trim check time interval in seconds. Default is 5.0.
+ 
+ @discussion The cache holds an internal timer to check whether the cache reaches 
+ its limits, and if the limit is reached, it begins to evict objects.
+ */
+@property NSTimeInterval autoTrimInterval;
+
+/**
+ If `YES`, the cache will remove all objects when the app receives a memory warning.
+ The default value is `YES`.
+ */
+@property BOOL shouldRemoveAllObjectsOnMemoryWarning;
+
+/**
+ If `YES`, The cache will remove all objects when the app enter background.
+ The default value is `YES`.
+ */
+@property BOOL shouldRemoveAllObjectsWhenEnteringBackground;
+
+/**
+ A block to be executed when the app receives a memory warning.
+ The default value is nil.
+ */
+@property (nullable, copy) void(^didReceiveMemoryWarningBlock)(YYMemoryCache *cache);
+
+/**
+ A block to be executed when the app enter background.
+ The default value is nil.
+ */
+@property (nullable, copy) void(^didEnterBackgroundBlock)(YYMemoryCache *cache);
+
+/**
+ If `YES`, the key-value pair will be released on main thread, otherwise on
+ background thread. Default is NO.
+ 
+ @discussion You may set this value to `YES` if the key-value object contains
+ the instance which should be released in main thread (such as UIView/CALayer).
+ */
+@property BOOL releaseOnMainThread;
+
+/**
+ If `YES`, the key-value pair will be released asynchronously to avoid blocking 
+ the access methods, otherwise it will be released in the access method  
+ (such as removeObjectForKey:). Default is YES.
+ */
+@property BOOL releaseAsynchronously;
+
+
+#pragma mark - Access Methods
+///=============================================================================
+/// @name Access Methods
+///=============================================================================
+
+/**
+ Returns a Boolean value that indicates whether a given key is in cache.
+ 
+ @param key An object identifying the value. If nil, just return `NO`.
+ @return Whether the key is in cache.
+ */
+- (BOOL)containsObjectForKey:(id)key;
+
+/**
+ Returns the value associated with a given key.
+ 
+ @param key An object identifying the value. If nil, just return nil.
+ @return The value associated with key, or nil if no value is associated with key.
+ */
+- (nullable id)objectForKey:(id)key;
+
+/**
+ Sets the value of the specified key in the cache (0 cost).
+ 
+ @param object The object to be stored in the cache. If nil, it calls `removeObjectForKey:`.
+ @param key    The key with which to associate the value. If nil, this method has no effect.
+ @discussion Unlike an NSMutableDictionary object, a cache does not copy the key 
+ objects that are put into it.
+ */
+- (void)setObject:(nullable id)object forKey:(id)key;
+
+/**
+ Sets the value of the specified key in the cache, and associates the key-value 
+ pair with the specified cost.
+ 
+ @param object The object to store in the cache. If nil, it calls `removeObjectForKey`.
+ @param key    The key with which to associate the value. If nil, this method has no effect.
+ @param cost   The cost with which to associate the key-value pair.
+ @discussion Unlike an NSMutableDictionary object, a cache does not copy the key
+ objects that are put into it.
+ */
+- (void)setObject:(nullable id)object forKey:(id)key withCost:(NSUInteger)cost;
+
+/**
+ Removes the value of the specified key in the cache.
+ 
+ @param key The key identifying the value to be removed. If nil, this method has no effect.
+ */
+- (void)removeObjectForKey:(id)key;
+
+/**
+ Empties the cache immediately.
+ */
+- (void)removeAllObjects;
+
+
+#pragma mark - Trim
+///=============================================================================
+/// @name Trim
+///=============================================================================
+
+/**
+ Removes objects from the cache with LRU, until the `totalCount` is below or equal to
+ the specified value.
+ @param count  The total count allowed to remain after the cache has been trimmed.
+ */
+- (void)trimToCount:(NSUInteger)count;
+
+/**
+ Removes objects from the cache with LRU, until the `totalCost` is or equal to
+ the specified value.
+ @param cost The total cost allowed to remain after the cache has been trimmed.
+ */
+- (void)trimToCost:(NSUInteger)cost;
+
+/**
+ Removes objects from the cache with LRU, until all expiry objects removed by the
+ specified value.
+ @param age  The maximum age (in seconds) of objects.
+ */
+- (void)trimToAge:(NSTimeInterval)age;
+
+@end
+
+NS_ASSUME_NONNULL_END

--
Gitblit v1.8.0