给PHAsset类扩展一个 sizeString 的存储属性
import Foundation
import Photos
extension PHAsset{
private struct AssociatedKeys{
static var sizeString : String?
}
var sizeString : String? {
get {
//根据关键字返回给定对象的值
return objc_getAssociatedObject(self, &AssociatedKeys.sizeString) as? String
}
set {
if let newValue = newValue {
//设置给定对象的值为 newValue
objc_setAssociatedObject(self, &AssociatedKeys.sizeString, newValue as String?, objc_AssociationPolicy.OBJC_ASSOCIATION_COPY_NONATOMIC)
}
}
}
}
*** objc_setAssociatedObject 的四个参数:源对象,关键字,关联的对象 (newValue也就是你设置的值) 和一个关联策略(要深究的话点进去看官方注释)***
***关于 objc_AssociationPolicy,它是一个枚举:***
OBJC_ASSOCIATION_ASSIGN 等价 @property(assign)
OBJC_ASSOCIATION_RETAIN_NONATOMIC 等价 @property(nonatomic,strong)
OBJC_ASSOCIATION_COPY_NONATOMIC 等价 @property(nonatomic,copy)
OBJC_ASSOCIATION_RETAIN 等价 @property(atomic,strong)
OBJC_ASSOCIATION_COPY 等价 @property(atomic,copy)
网友评论