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 implementation

    wrapperExtension类包装器属性

    Default Implementation

    wrapperExtension类包装器属性

    Declaration

    Swift

    static var wrapperExtension: Wrapper<WrapperBase>.Type { get set }
  • wrapperExtension Default implementation

    wrapperExtension对象包装器属性

    Default Implementation

    wrapperExtension对象包装器属性

    Declaration

    Swift

    var wrapperExtension: Wrapper<WrapperBase> { get set }
  • fw Default implementation

    fw类包装器属性

    Default Implementation

    fw类包装器属性

    Declaration

    Swift

    @_spi(FW)
    static var fw: Wrapper<WrapperBase>.Type { get set }
  • fw Default implementation

    fw对象包装器属性

    Default Implementation

    fw对象包装器属性

    Declaration

    Swift

    @_spi(FW)
    var fw: Wrapper<WrapperBase> { get set }

Observer

  • 监听某个点对点消息,可指定对象,对象释放时自动移除监听,添加多次执行多次

    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

    监听者

  • 监听某个点对点消息,可指定对象,对象释放时自动移除监听,添加多次执行多次

    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

    监听者

  • 手工移除某个点对点消息指定监听,可指定对象

    Declaration

    Swift

    public func fw_unobserveMessage(_ name: Notification.Name, object: AnyObject? = nil, target: AnyObject? = nil, action: Selector? = nil)

    Parameters

    name

    消息名称

    object

    消息对象,值为nil时表示所有

    target

    消息目标

    action

    目标动作

  • 手工移除某个指定对象点对点消息指定监听

    Declaration

    Swift

    @discardableResult
    public func fw_unobserveMessage(observer: Any) -> Bool

    Parameters

    observer

    监听者

  • fw_unobserveAllMessages() Extension method

    手工移除所有点对点消息监听

    Declaration

    Swift

    public func fw_unobserveAllMessages()

Subject

  • 发送点对点消息,附带对象和用户信息

    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

    消息接收者

  • 发送点对点消息,附带对象和用户信息

    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

    消息接收者

Observer

  • 监听某个广播通知,可指定对象,对象释放时自动移除监听,添加多次执行多次

    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

    监听者

  • 监听某个广播通知,可指定对象,对象释放时自动移除监听,添加多次执行多次

    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

    监听者

  • 单次监听通知,触发后自动移除监听

    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

    监听句柄

  • 手工移除某个广播通知指定监听,可指定对象

    Declaration

    Swift

    public func fw_unobserveNotification(_ name: Notification.Name, object: AnyObject? = nil, target: AnyObject? = nil, action: Selector? = nil)

    Parameters

    name

    通知名称

    object

    通知对象,值为nil时表示所有

    target

    通知目标

    action

    目标动作

  • 手工移除某个指定对象广播通知指定监听

    Declaration

    Swift

    @discardableResult
    public func fw_unobserveNotification(observer: Any) -> Bool

    Parameters

    observer

    监听者

  • 手工移除所有点对点消息监听

    Declaration

    Swift

    public func fw_unobserveAllNotifications()

Subject

  • 发送广播通知,附带对象和用户信息

    Declaration

    Swift

    public func fw_postNotification(_ name: Notification.Name, object: Any? = nil, userInfo: [AnyHashable : Any]? = nil)

    Parameters

    name

    通知名称

    object

    通知对象

    userInfo

    用户信息

  • 发送广播通知,附带对象和用户信息

    Declaration

    Swift

    public static func fw_postNotification(_ name: Notification.Name, object: Any? = nil, userInfo: [AnyHashable : Any]? = nil)

    Parameters

    name

    通知名称

    object

    通知对象

    userInfo

    用户信息

Module

  • fw_moduleName Extension method

    获取类所在的模块名称,兼容主应用和framework等(可能不准确)

    Declaration

    Swift

    public static var fw_moduleName: String { get }

Runtime

  • fw_invokeMethod(_:objects:) Extension method

    安全调用方法,支持多个参数

    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(_:object:) Extension method

    安全调用内部属性设置方法,如果属性不存在,则忽略之

    如果iOS13系统UIView调用部分valueForKey:方法闪退,且没有好的替代方案,可尝试调用此方法

    Declaration

    Swift

    public func fw_invokeSetter(_ name: String, object: Any?)

    Parameters

    name

    内部属性名称

    object

    传递的方法参数

  • fw_invokeMethod(_:objects:) Extension method

    安全调用类方法,支持多个参数

    Declaration

    Swift

    @discardableResult
    public static func fw_invokeMethod(_ selector: Selector, objects: [Any]? = nil) -> Unmanaged<AnyObject>!

    Parameters

    selector

    要执行的方法

    objects

    传递的参数数组,默认空

    Return Value

    方法返回值

Property

  • 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

    属性值

  • 设置关联属性,可指定关联策略,支持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

  • 设置拷贝关联属性,支持KVO

    Declaration

    Swift

    public func fw_setPropertyCopy(_ value: Any?, forName name: String)

    Parameters

    value

    属性值

    name

    属性名称

  • 设置弱引用关联属性,支持KVO,OC不支持weak关联属性

    Declaration

    Swift

    public func fw_setPropertyWeak(_ value: AnyObject?, forName name: String)

    Parameters

    value

    属性值

    name

    属性名称

  • 设置Bool关联属性

    Declaration

    Swift

    public func fw_setPropertyBool(_ value: Bool, forName name: String)

    Parameters

    value

    属性值

    name

    属性名称

  • 设置Int关联属性

    Declaration

    Swift

    public func fw_setPropertyInt(_ value: Int, forName name: String)

    Parameters

    value

    属性值

    name

    属性名称

  • 设置Double关联属性

    Declaration

    Swift

    public func fw_setPropertyDouble(_ value: Double, forName name: String)

    Parameters

    value

    属性值

    name

    属性名称

  • 设置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

    属性值

  • 设置类关联属性,可指定关联策略

    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

  • 设置类拷贝关联属性

    Declaration

    Swift

    public static func fw_setPropertyCopy(_ value: Any?, forName name: String)

    Parameters

    value

    属性值

    name

    属性名称

  • 设置类弱引用关联属性,OC不支持weak关联属性

    Declaration

    Swift

    public static func fw_setPropertyWeak(_ value: AnyObject?, forName name: String)

    Parameters

    value

    属性值

    name

    属性名称

Bind

  • fw_bindObject(_:forKey:) Extension method

    给对象绑定上另一个对象以供后续取出使用,如果 object 传入 nil 则会清除该 key 之前绑定的对象

    Declaration

    Swift

    public func fw_bindObject(_ object: Any?, forKey: String)

    Parameters

    object

    对象,会被 strong 强引用

    forKey

    键名

  • fw_bindObjectWeak(_:forKey:) Extension method

    给对象绑定上另一个弱引用对象以供后续取出使用,如果 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(_:forKey:) Extension method

    给对象绑定上一个 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(_:forKey:) Extension method

    给对象绑定上一个 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(_:forKey:) Extension method

    给对象绑定上一个 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(_:forKey:) Extension method

    给对象绑定上一个 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

    是否绑定

Hash

  • fw_hashValue Extension method

    获取当前对象的hashValue,等同于: ObjectIdentifier(self).hashValue

    Declaration

    Swift

    public var fw_hashValue: Int { get }

Mirror

  • fw_mirrorDictionary Extension method

    获取当前对象的反射字典(含父类直至NSObject),不含nil值

    Declaration

    Swift

    public var fw_mirrorDictionary: [String : Any] { get }

Available where Self: AnyObject

  • 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(_:closure:) Extension method

    同一个token仅执行一次block,对象范围

    Declaration

    Swift

    public func fw_dispatchOnce(
        _ token: String,
        closure: @escaping () -> Void
    )
  • 延迟delay秒后主线程执行,返回可取消的block,对象范围

    Declaration

    Swift

    @discardableResult
    public func fw_performBlock(
        _ block: @escaping (Any) -> Void,
        afterDelay delay: TimeInterval
    ) -> Any
  • 延迟delay秒后后台线程执行,返回可取消的block,对象范围

    Declaration

    Swift

    @discardableResult
    public func fw_performBlock(
        inBackground block: @escaping (Any) -> Void,
        afterDelay delay: TimeInterval
    ) -> Any
  • 延迟delay秒后指定线程执行,返回可取消的block,对象范围

    Declaration

    Swift

    @discardableResult
    public func fw_performBlock(
        _ block: @escaping (Any) -> Void,
        on queue: DispatchQueue,
        afterDelay delay: TimeInterval
    ) -> Any