WrapperCompatible
public protocol WrapperCompatible
属性包装器兼容协议
自定义fw为任意名称(如app)示例:
extension WrapperCompatible {
public static var app: Wrapper<Self>.Type { get { wrapperExtension } set {} }
public var app: Wrapper<Self> { get { wrapperExtension } set {} }
}
使用示例:
String.app.jsonEncode(object)
-
关联类型
Declaration
Swift
associatedtype WrapperBase
-
wrapperExtension
Default implementationwrapperExtension类包装器属性
Default Implementation
wrapperExtension类包装器属性
Declaration
Swift
static var wrapperExtension: Wrapper<WrapperBase>.Type { get set }
-
wrapperExtension
Default implementationwrapperExtension对象包装器属性
Default Implementation
wrapperExtension对象包装器属性
Declaration
Swift
var wrapperExtension: Wrapper<WrapperBase> { get set }
-
fw
Default implementationfw类包装器属性
Default Implementation
fw类包装器属性
Declaration
Swift
@_spi(FW) static var fw: Wrapper<WrapperBase>.Type { get set }
-
fw
Default implementationfw对象包装器属性
Default Implementation
fw对象包装器属性
Declaration
Swift
@_spi(FW) var fw: Wrapper<WrapperBase> { get set }
-
fw_observeMessage(_:
Extension methodobject: block: ) 监听某个点对点消息,可指定对象,对象释放时自动移除监听,添加多次执行多次
Declaration
Swift
@discardableResult public func fw_observeMessage(_ name: Notification.Name, object: AnyObject? = nil, block: @escaping (Notification) -> Void) -> NSObjectProtocol
Parameters
name
消息名称
object
消息对象,值为nil时表示所有
block
消息句柄
Return Value
监听者
-
fw_observeMessage(_:
Extension methodobject: target: action: ) 监听某个点对点消息,可指定对象,对象释放时自动移除监听,添加多次执行多次
Declaration
Swift
@discardableResult public func fw_observeMessage(_ name: Notification.Name, object: AnyObject? = nil, target: AnyObject?, action: Selector) -> NSObjectProtocol
Parameters
name
消息名称
object
消息对象,值为nil时表示所有
target
消息目标
action
目标动作,参数为通知对象
Return Value
监听者
-
fw_unobserveMessage(_:
Extension methodobject: target: action: ) 手工移除某个点对点消息指定监听,可指定对象
Declaration
Swift
public func fw_unobserveMessage(_ name: Notification.Name, object: AnyObject? = nil, target: AnyObject? = nil, action: Selector? = nil)
Parameters
name
消息名称
object
消息对象,值为nil时表示所有
target
消息目标
action
目标动作
-
fw_unobserveMessage(observer:
Extension method) 手工移除某个指定对象点对点消息指定监听
Declaration
Swift
@discardableResult public func fw_unobserveMessage(observer: Any) -> Bool
Parameters
observer
监听者
-
fw_unobserveAllMessages()
Extension method手工移除所有点对点消息监听
Declaration
Swift
public func fw_unobserveAllMessages()
-
fw_sendMessage(_:
Extension methodobject: userInfo: toReceiver: ) 发送点对点消息,附带对象和用户信息
Declaration
Swift
public func fw_sendMessage(_ name: Notification.Name, object: AnyObject? = nil, userInfo: [AnyHashable : Any]? = nil, toReceiver: Any)
Parameters
name
消息名称
object
消息对象,默认nil
userInfo
用户信息,默认nil
toReceiver
消息接收者
-
fw_sendMessage(_:
Extension methodobject: userInfo: toReceiver: ) 发送点对点消息,附带对象和用户信息
Declaration
Swift
public static func fw_sendMessage(_ name: Notification.Name, object: AnyObject? = nil, userInfo: [AnyHashable : Any]? = nil, toReceiver: Any)
Parameters
name
消息名称
object
消息对象,默认nil
userInfo
用户信息,默认nil
toReceiver
消息接收者
-
fw_observeNotification(_:
Extension methodobject: block: ) 监听某个广播通知,可指定对象,对象释放时自动移除监听,添加多次执行多次
Declaration
Swift
@discardableResult public func fw_observeNotification(_ name: Notification.Name, object: AnyObject? = nil, block: @escaping (Notification) -> Void) -> NSObjectProtocol
Parameters
name
通知名称
object
通知对象,值为nil时表示所有
block
通知句柄
Return Value
监听者
-
fw_observeNotification(_:
Extension methodobject: target: action: ) 监听某个广播通知,可指定对象,对象释放时自动移除监听,添加多次执行多次
Declaration
Swift
@discardableResult public func fw_observeNotification(_ name: Notification.Name, object: AnyObject? = nil, target: AnyObject?, action: Selector) -> NSObjectProtocol
Parameters
name
通知名称
object
通知对象,值为nil时表示所有
target
通知目标
action
目标动作,参数为通知对象
Return Value
监听者
-
fw_observeOnce(forName:
Extension methodobject: queue: using: ) 单次监听通知,触发后自动移除监听
Declaration
Swift
public static func fw_observeOnce( forName name: NSNotification.Name?, object: Any? = nil, queue: OperationQueue? = nil, using block: @escaping (_ notification: Notification) -> Void )
Parameters
name
通知名称
object
通知对象,值为nil时表示所有
queue
通知队列
block
监听句柄
-
fw_unobserveNotification(_:
Extension methodobject: target: action: ) 手工移除某个广播通知指定监听,可指定对象
Declaration
Swift
public func fw_unobserveNotification(_ name: Notification.Name, object: AnyObject? = nil, target: AnyObject? = nil, action: Selector? = nil)
Parameters
name
通知名称
object
通知对象,值为nil时表示所有
target
通知目标
action
目标动作
-
fw_unobserveNotification(observer:
Extension method) 手工移除某个指定对象广播通知指定监听
Declaration
Swift
@discardableResult public func fw_unobserveNotification(observer: Any) -> Bool
Parameters
observer
监听者
-
fw_unobserveAllNotifications()
Extension method手工移除所有点对点消息监听
Declaration
Swift
public func fw_unobserveAllNotifications()
-
fw_postNotification(_:
Extension methodobject: userInfo: ) 发送广播通知,附带对象和用户信息
Declaration
Swift
public func fw_postNotification(_ name: Notification.Name, object: Any? = nil, userInfo: [AnyHashable : Any]? = nil)
Parameters
name
通知名称
object
通知对象
userInfo
用户信息
-
fw_postNotification(_:
Extension methodobject: userInfo: ) 发送广播通知,附带对象和用户信息
Declaration
Swift
public static func fw_postNotification(_ name: Notification.Name, object: Any? = nil, userInfo: [AnyHashable : Any]? = nil)
Parameters
name
通知名称
object
通知对象
userInfo
用户信息
-
fw_moduleName
Extension method获取类所在的模块名称,兼容主应用和framework等(可能不准确)
Declaration
Swift
public static var fw_moduleName: String { get }
-
fw_invokeMethod(_:
Extension methodobjects: ) 安全调用方法,支持多个参数
Declaration
Swift
@discardableResult public func fw_invokeMethod(_ selector: Selector, objects: [Any]? = nil) -> Unmanaged<AnyObject>!
Parameters
selector
要执行的方法
objects
传递的参数数组,默认空
Return Value
方法返回值
-
fw_invokeGetter(_:
Extension method) 安全调用内部属性获取方法,如果属性不存在,则忽略之
如果iOS13系统UIView调用部分valueForKey:方法闪退,且没有好的替代方案,可尝试调用此方法
Declaration
Swift
public func fw_invokeGetter(_ name: String) -> Any?
Parameters
name
内部属性名称
Return Value
属性值
-
fw_invokeSetter(_:
Extension methodobject: ) 安全调用内部属性设置方法,如果属性不存在,则忽略之
如果iOS13系统UIView调用部分valueForKey:方法闪退,且没有好的替代方案,可尝试调用此方法
Declaration
Swift
public func fw_invokeSetter(_ name: String, object: Any?)
Parameters
name
内部属性名称
object
传递的方法参数
-
fw_invokeMethod(_:
Extension methodobjects: ) 安全调用类方法,支持多个参数
Declaration
Swift
@discardableResult public static func fw_invokeMethod(_ selector: Selector, objects: [Any]? = nil) -> Unmanaged<AnyObject>!
Parameters
selector
要执行的方法
objects
传递的参数数组,默认空
Return Value
方法返回值
-
fw_tempObject
Extension method临时对象,强引用,支持KVO
Declaration
Swift
public var fw_tempObject: Any? { get nonmutating set }
-
fw_property(forName:
Extension method) 读取关联属性
Declaration
Swift
public func fw_property(forName name: String) -> Any?
Parameters
name
属性名称
Return Value
属性值
-
fw_propertyBool(forName:
Extension method) 读取Bool关联属性,默认false
Declaration
Swift
public func fw_propertyBool(forName name: String) -> Bool
Parameters
name
属性名称
Return Value
属性值
-
fw_propertyInt(forName:
Extension method) 读取Int关联属性,默认0
Declaration
Swift
public func fw_propertyInt(forName name: String) -> Int
Parameters
name
属性名称
Return Value
属性值
-
fw_propertyDouble(forName:
Extension method) 读取Double关联属性,默认0
Declaration
Swift
public func fw_propertyDouble(forName name: String) -> Double
Parameters
name
属性名称
Return Value
属性值
-
fw_propertyNumber(forName:
Extension method) 读取NSNumber关联属性,默认nil
Declaration
Swift
public func fw_propertyNumber(forName name: String) -> NSNumber?
Parameters
name
属性名称
Return Value
属性值
-
fw_setProperty(_:
Extension methodforName: policy: ) 设置关联属性,可指定关联策略,支持KVO
Declaration
Swift
public func fw_setProperty(_ value: Any?, forName name: String, policy: objc_AssociationPolicy = .OBJC_ASSOCIATION_RETAIN_NONATOMIC)
Parameters
value
属性值
name
属性名称
policy
关联策略,默认RETAIN_NONATOMIC
-
fw_setPropertyCopy(_:
Extension methodforName: ) 设置拷贝关联属性,支持KVO
Declaration
Swift
public func fw_setPropertyCopy(_ value: Any?, forName name: String)
Parameters
value
属性值
name
属性名称
-
fw_setPropertyWeak(_:
Extension methodforName: ) 设置弱引用关联属性,支持KVO,OC不支持weak关联属性
Declaration
Swift
public func fw_setPropertyWeak(_ value: AnyObject?, forName name: String)
Parameters
value
属性值
name
属性名称
-
fw_setPropertyBool(_:
Extension methodforName: ) 设置Bool关联属性
Declaration
Swift
public func fw_setPropertyBool(_ value: Bool, forName name: String)
Parameters
value
属性值
name
属性名称
-
fw_setPropertyInt(_:
Extension methodforName: ) 设置Int关联属性
Declaration
Swift
public func fw_setPropertyInt(_ value: Int, forName name: String)
Parameters
value
属性值
name
属性名称
-
fw_setPropertyDouble(_:
Extension methodforName: ) 设置Double关联属性
Declaration
Swift
public func fw_setPropertyDouble(_ value: Double, forName name: String)
Parameters
value
属性值
name
属性名称
-
fw_setPropertyNumber(_:
Extension methodforName: ) 设置NSNumber关联属性
Declaration
Swift
public func fw_setPropertyNumber(_ value: NSNumber?, forName name: String)
Parameters
value
属性值
name
属性名称
-
fw_property(forName:
Extension method) 读取类关联属性
Declaration
Swift
public static func fw_property(forName name: String) -> Any?
Parameters
name
属性名称
Return Value
属性值
-
fw_setProperty(_:
Extension methodforName: policy: ) 设置类关联属性,可指定关联策略
Declaration
Swift
public static func fw_setProperty(_ value: Any?, forName name: String, policy: objc_AssociationPolicy = .OBJC_ASSOCIATION_RETAIN_NONATOMIC)
Parameters
value
属性值
name
属性名称
policy
关联策略,默认RETAIN_NONATOMIC
-
fw_setPropertyCopy(_:
Extension methodforName: ) 设置类拷贝关联属性
Declaration
Swift
public static func fw_setPropertyCopy(_ value: Any?, forName name: String)
Parameters
value
属性值
name
属性名称
-
fw_setPropertyWeak(_:
Extension methodforName: ) 设置类弱引用关联属性,OC不支持weak关联属性
Declaration
Swift
public static func fw_setPropertyWeak(_ value: AnyObject?, forName name: String)
Parameters
value
属性值
name
属性名称
-
fw_bindObject(_:
Extension methodforKey: ) 给对象绑定上另一个对象以供后续取出使用,如果 object 传入 nil 则会清除该 key 之前绑定的对象
Declaration
Swift
public func fw_bindObject(_ object: Any?, forKey: String)
Parameters
object
对象,会被 strong 强引用
forKey
键名
-
fw_bindObjectWeak(_:
Extension methodforKey: ) 给对象绑定上另一个弱引用对象以供后续取出使用,如果 object 传入 nil 则会清除该 key 之前绑定的对象
Declaration
Swift
public func fw_bindObjectWeak(_ object: AnyObject?, forKey: String)
Parameters
object
对象,不会被 strong 强引用
forKey
键名
-
fw_boundObject(forKey:
Extension method) 取出之前使用 bind 方法绑定的对象
Declaration
Swift
public func fw_boundObject(forKey: String) -> Any?
Parameters
forKey
键名
Return Value
绑定的对象
-
fw_bindDouble(_:
Extension methodforKey: ) 给对象绑定上一个 double 值以供后续取出使用
Declaration
Swift
public func fw_bindDouble(_ value: Double, forKey: String)
Parameters
value
double值
forKey
键名
-
fw_boundDouble(forKey:
Extension method) 取出之前用 bindDouble:forKey: 绑定的值
Declaration
Swift
public func fw_boundDouble(forKey: String) -> Double
Parameters
forKey
键名
Return Value
绑定的值
-
fw_bindBool(_:
Extension methodforKey: ) 给对象绑定上一个 BOOL 值以供后续取出使用
Declaration
Swift
public func fw_bindBool(_ value: Bool, forKey: String)
Parameters
value
布尔值
forKey
键名
-
fw_boundBool(forKey:
Extension method) 取出之前用 bindBool:forKey: 绑定的值
Declaration
Swift
public func fw_boundBool(forKey: String) -> Bool
Parameters
forKey
键名
Return Value
绑定的值
-
fw_bindInt(_:
Extension methodforKey: ) 给对象绑定上一个 NSInteger 值以供后续取出使用
Declaration
Swift
public func fw_bindInt(_ value: Int, forKey: String)
Parameters
value
整数值
forKey
键名
-
fw_boundInt(forKey:
Extension method) 取出之前用 bindInt:forKey: 绑定的值
Declaration
Swift
public func fw_boundInt(forKey: String) -> Int
Parameters
forKey
键名
Return Value
绑定的值
-
fw_bindNumber(_:
Extension methodforKey: ) 给对象绑定上一个 NSNumber 值以供后续取出使用
Declaration
Swift
public func fw_bindNumber(_ value: NSNumber?, forKey: String)
Parameters
value
NSNumber值
forKey
键名
-
fw_boundNumber(forKey:
Extension method) 取出之前用 bindNumber:forKey: 绑定的值
Declaration
Swift
public func fw_boundNumber(forKey: String) -> NSNumber?
Parameters
forKey
键名
Return Value
绑定的值
-
fw_removeBinding(forKey:
Extension method) 移除之前使用 bind 方法绑定的对象
Declaration
Swift
public func fw_removeBinding(forKey: String)
Parameters
forKey
键名
-
fw_removeAllBindings()
Extension method移除之前使用 bind 方法绑定的所有对象
Declaration
Swift
public func fw_removeAllBindings()
-
fw_allBindingKeys()
Extension method返回当前有绑定对象存在的所有的 key 的数组,数组中元素的顺序是随机的,如果不存在任何 key,则返回一个空数组
Declaration
Swift
public func fw_allBindingKeys() -> [String]
-
fw_hasBindingKey(_:
Extension method) 返回是否设置了某个 key
Declaration
Swift
public func fw_hasBindingKey(_ key: String) -> Bool
Parameters
key
键名
Return Value
是否绑定
-
fw_hashValue
Extension method获取当前对象的hashValue,等同于: ObjectIdentifier(self).hashValue
Declaration
Swift
public var fw_hashValue: Int { get }
-
fw_mirrorDictionary
Extension method获取当前对象的反射字典(含父类直至NSObject),不含nil值
Declaration
Swift
public var fw_mirrorDictionary: [String : Any] { get }
-
fw_lock()
Extension method执行加锁(支持任意对象),等待信号量,自动创建信号量
Declaration
Swift
public func fw_lock()
-
fw_unlock()
Extension method执行解锁(支持任意对象),发送信号量,自动创建信号量
Declaration
Swift
public func fw_unlock()
-
fw_queue
Extension method延迟创建队列,默认串行队列
Declaration
Swift
public var fw_queue: DispatchQueue { get nonmutating set }
-
fw_synchronized(_:
Extension method) 通用互斥锁方法
Declaration
Swift
public static func fw_synchronized(_ closure: () -> Void)
-
fw_synchronized(_:
Extension method) 通用互斥锁方法,返回指定对象
Declaration
Swift
public static func fw_synchronized<T>(_ closure: () -> T) -> T
-
fw_synchronized(_:
Extension method) 通用互斥锁方法
Declaration
Swift
public func fw_synchronized(_ closure: () -> Void)
-
fw_synchronized(_:
Extension method) 通用互斥锁方法,返回指定对象
Declaration
Swift
public func fw_synchronized<T>(_ closure: () -> T) -> T
-
fw_dispatchOnce(_:
Extension methodclosure: ) 同一个token仅执行一次block,对象范围
Declaration
Swift
public func fw_dispatchOnce( _ token: String, closure: @escaping () -> Void )
-
fw_performBlock(_:
Extension methodafterDelay: ) 延迟delay秒后主线程执行,返回可取消的block,对象范围
Declaration
Swift
@discardableResult public func fw_performBlock( _ block: @escaping (Any) -> Void, afterDelay delay: TimeInterval ) -> Any
-
fw_performBlock(inBackground:
Extension methodafterDelay: ) 延迟delay秒后后台线程执行,返回可取消的block,对象范围
Declaration
Swift
@discardableResult public func fw_performBlock( inBackground block: @escaping (Any) -> Void, afterDelay delay: TimeInterval ) -> Any
-
fw_performBlock(_:
Extension methodon: afterDelay: ) 延迟delay秒后指定线程执行,返回可取消的block,对象范围
Declaration
Swift
@discardableResult public func fw_performBlock( _ block: @escaping (Any) -> Void, on queue: DispatchQueue, afterDelay delay: TimeInterval ) -> Any