SDWebImage源碼閱讀(十五)UIView+WebCacheOperation
阿新 • • 發佈:2017-06-10
ati opera bject mov cache webim cell associate exist
這個分類主要用來對 UIView 的圖像下載操作添加、取消和移除。
.h
1 * Set the image load operation (storage in a UIView based dictionary) 2 * 3 * @param operation the operation 4 * @param key key for storing the operation 5 */ 6 - (void)sd_setImageLoadOperation:(nullable id)operation forKey:(nullable NSString *)key;
設置圖像加載操作。
1 /** 2 * Cancel all operations for the current UIView and key 3 * 4 * @param key key for identifying the operations 5 */ 6 - (void)sd_cancelImageLoadOperationWithKey:(nullable NSString *)key;
根據 key 取消 UIView 的所有當前操作。
1 /** 2 * Just remove the operations corresponding to the current UIView and key without cancelling them3 * 4 * @param key key for identifying the operations 5 */ 6 - (void)sd_removeImageLoadOperationWithKey:(nullable NSString *)key;
僅僅根據 key 移除對應的當前 UIView 的操作,並沒有取消它們。
.m
1 static char loadOperationKey; 2 3 typedef NSMutableDictionary<NSString *, id> SDOperationsDictionary;
定義一個靜態 char loadOperationKey。
定義一個 key 是字符串 value 是id 的可變字典類型。
1 - (SDOperationsDictionary *)operationDictionary { 2 SDOperationsDictionary *operations = objc_getAssociatedObject(self, &loadOperationKey); 3 if (operations) { 4 return operations; 5 } 6 operations = [NSMutableDictionary dictionary]; 7 objc_setAssociatedObject(self, &loadOperationKey, operations, OBJC_ASSOCIATION_RETAIN_NONATOMIC); 8 return operations; 9 }
給 UIView 動態添加一個 operationDictionary 屬性。
objc_getAssociatedObject
1 /** 2 * Returns the value associated with a given object for a given key. 3 * 4 * @param object The source object for the association. 5 * @param key The key for the association. 6 * 7 * @return The value associated with the key \e key for \e object. 8 * 9 * @see objc_setAssociatedObject 10 */ 11 OBJC_EXPORT id objc_getAssociatedObject(id object, const void *key) 12 OBJC_AVAILABLE(10.6, 3.1, 9.0, 1.0);
objc_setAssociatedObject
1 /** 2 * Sets an associated value for a given object using a given key and association policy. 3 * 4 * @param object The source object for the association. 5 * @param key The key for the association. 6 * @param value The value to associate with the key key for object. Pass nil to clear an existing association. 7 * @param policy The policy for the association. For possible values, see “Associative Object Behaviors.” 8 * 9 * @see objc_setAssociatedObject 10 * @see objc_removeAssociatedObjects 11 */ 12 OBJC_EXPORT void objc_setAssociatedObject(id object, const void *key, id value, objc_AssociationPolicy policy) 13 OBJC_AVAILABLE(10.6, 3.1, 9.0, 1.0);
SDWebImage源碼閱讀(十五)UIView+WebCacheOperation