NSObject(FWMessage)

@interface NSObject (FWMessage)

#pragma mark - Observer

/**
 监听某个点对点消息,对象释放时自动移除监听,添加多次执行多次
 
 @param name  消息名称
 @param block 消息句柄
 @return 监听唯一标志
 */
- (NSString *)fw_observeMessage:(NSNotificationName)name block:(void (^)(NSNotification *notification))block NS_REFINED_FOR_SWIFT;

/**
 监听某个指定对象点对点消息,对象释放时自动移除监听,添加多次执行多次
 
 @param name   消息名称
 @param object 消息对象,值为nil时表示所有
 @param block  消息句柄
 @return 监听唯一标志
 */
- (NSString *)fw_observeMessage:(NSNotificationName)name object:(nullable id)object block:(void (^)(NSNotification *notification))block NS_REFINED_FOR_SWIFT;

/**
 监听某个点对点消息,对象释放时自动移除监听,添加多次执行多次
 
 @param name   消息名称
 @param target 消息目标
 @param action 目标动作,参数为通知对象
 @return 监听唯一标志
 */
- (NSString *)fw_observeMessage:(NSNotificationName)name target:(nullable id)target action:(SEL)action NS_REFINED_FOR_SWIFT;

/**
 监听某个指定对象点对点消息,对象释放时自动移除监听,添加多次执行多次
 
 @param name   消息名称
 @param object 消息对象,值为nil时表示所有
 @param target 消息目标
 @param action 目标动作,参数为通知对象
 @return 监听唯一标志
 */
- (NSString *)fw_observeMessage:(NSNotificationName)name object:(nullable id)object target:(nullable id)target action:(SEL)action NS_REFINED_FOR_SWIFT;

/**
 手工移除某个点对点消息指定监听
 
 @param name   消息名称
 @param target 消息目标
 @param action 目标动作
 */
- (void)fw_unobserveMessage:(NSNotificationName)name target:(nullable id)target action:(nullable SEL)action NS_REFINED_FOR_SWIFT;

/**
 手工移除某个指定对象点对点消息指定监听
 
 @param name   消息名称
 @param object 消息对象,值为nil时表示所有
 @param target 消息目标
 @param action 目标动作
 */
- (void)fw_unobserveMessage:(NSNotificationName)name object:(nullable id)object target:(nullable id)target action:(nullable SEL)action NS_REFINED_FOR_SWIFT;

/**
 手工移除某个指定对象点对点消息指定监听
 
 @param name       消息名称
 @param identifier 监听唯一标志
 */
- (void)fw_unobserveMessage:(NSNotificationName)name identifier:(NSString *)identifier NS_REFINED_FOR_SWIFT;

/**
 手工移除某个点对点消息所有监听
 
 @param name 消息名称
 */
- (void)fw_unobserveMessage:(NSNotificationName)name NS_REFINED_FOR_SWIFT;

/**
 手工移除某个指定对象点对点消息所有监听
 
 @param name   消息名称
 @param object 消息对象,值为nil时表示所有
 */
- (void)fw_unobserveMessage:(NSNotificationName)name object:(nullable id)object NS_REFINED_FOR_SWIFT;

/**
 手工移除所有点对点消息监听
 */
- (void)fw_unobserveAllMessages NS_REFINED_FOR_SWIFT;

#pragma mark - Subject

/**
 发送点对点消息
 
 @param name 消息名称
 @param receiver 消息接收者
 */
- (void)fw_sendMessage:(NSNotificationName)name toReceiver:(id)receiver NS_REFINED_FOR_SWIFT;

/**
 发送点对点消息,附带对象
 
 @param name   消息名称
 @param object 消息对象
 @param receiver 消息接收者
 */
- (void)fw_sendMessage:(NSNotificationName)name object:(nullable id)object toReceiver:(id)receiver NS_REFINED_FOR_SWIFT;

/**
 发送点对点消息,附带对象和用户信息
 
 @param name     消息名称
 @param object   消息对象
 @param userInfo 用户信息
 @param receiver 消息接收者
 */
- (void)fw_sendMessage:(NSNotificationName)name object:(nullable id)object userInfo:(nullable NSDictionary *)userInfo toReceiver:(id)receiver NS_REFINED_FOR_SWIFT;

/**
 发送类点对点消息
 
 @param name 消息名称
 @param receiver 消息接收者
 */
+ (void)fw_sendMessage:(NSNotificationName)name toReceiver:(id)receiver NS_REFINED_FOR_SWIFT;

/**
 发送类点对点消息,附带对象
 
 @param name   消息名称
 @param object 消息对象
 @param receiver 消息接收者
 */
+ (void)fw_sendMessage:(NSNotificationName)name object:(nullable id)object toReceiver:(id)receiver NS_REFINED_FOR_SWIFT;

/**
 发送类点对点消息,附带对象和用户信息
 
 @param name     消息名称
 @param object   消息对象
 @param userInfo 用户信息
 @param receiver 消息接收者
 */
+ (void)fw_sendMessage:(NSNotificationName)name object:(nullable id)object userInfo:(nullable NSDictionary *)userInfo toReceiver:(id)receiver NS_REFINED_FOR_SWIFT;

@end

Undocumented

Observer

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

    Declaration

    Objective-C

    - (nonnull NSString *)
        fw_observeMessage:(nonnull NSNotificationName)name
                    block:
                        (nonnull void (^)(NSNotification *_Nonnull __strong))block;

    Parameters

    name

    消息名称

    block

    消息句柄

    Return Value

    监听唯一标志

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

    Declaration

    Objective-C

    - (nonnull NSString *)
        fw_observeMessage:(nonnull NSNotificationName)name
                   object:(nullable id)object
                    block:
                        (nonnull void (^)(NSNotification *_Nonnull __strong))block;

    Parameters

    name

    消息名称

    object

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

    block

    消息句柄

    Return Value

    监听唯一标志

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

    Declaration

    Objective-C

    - (nonnull NSString *)fw_observeMessage:(nonnull NSNotificationName)name
                                     target:(nullable id)target
                                     action:(nonnull SEL)action;

    Parameters

    name

    消息名称

    target

    消息目标

    action

    目标动作,参数为通知对象

    Return Value

    监听唯一标志

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

    Declaration

    Objective-C

    - (nonnull NSString *)fw_observeMessage:(nonnull NSNotificationName)name
                                     object:(nullable id)object
                                     target:(nullable id)target
                                     action:(nonnull SEL)action;

    Parameters

    name

    消息名称

    object

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

    target

    消息目标

    action

    目标动作,参数为通知对象

    Return Value

    监听唯一标志

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

    Declaration

    Objective-C

    - (void)fw_unobserveMessage:(nonnull NSNotificationName)name
                         target:(nullable id)target
                         action:(nullable SEL)action;

    Parameters

    name

    消息名称

    target

    消息目标

    action

    目标动作

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

    Declaration

    Objective-C

    - (void)fw_unobserveMessage:(nonnull NSNotificationName)name
                         object:(nullable id)object
                         target:(nullable id)target
                         action:(nullable SEL)action;

    Parameters

    name

    消息名称

    object

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

    target

    消息目标

    action

    目标动作

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

    Declaration

    Objective-C

    - (void)fw_unobserveMessage:(nonnull NSNotificationName)name
                     identifier:(nonnull NSString *)identifier;

    Parameters

    name

    消息名称

    identifier

    监听唯一标志

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

    Declaration

    Objective-C

    - (void)fw_unobserveMessage:(nonnull NSNotificationName)name;

    Parameters

    name

    消息名称

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

    Declaration

    Objective-C

    - (void)fw_unobserveMessage:(nonnull NSNotificationName)name
                         object:(nullable id)object;

    Parameters

    name

    消息名称

    object

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

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

    Declaration

    Objective-C

    - (void)fw_unobserveAllMessages;

Subject

  • 发送点对点消息

    Declaration

    Objective-C

    - (void)fw_sendMessage:(nonnull NSNotificationName)name
                toReceiver:(nonnull id)receiver;

    Parameters

    name

    消息名称

    receiver

    消息接收者

  • 发送点对点消息,附带对象

    Declaration

    Objective-C

    - (void)fw_sendMessage:(nonnull NSNotificationName)name
                    object:(nullable id)object
                toReceiver:(nonnull id)receiver;

    Parameters

    name

    消息名称

    object

    消息对象

    receiver

    消息接收者

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

    Declaration

    Objective-C

    - (void)fw_sendMessage:(nonnull NSNotificationName)name
                    object:(nullable id)object
                  userInfo:(nullable NSDictionary *)userInfo
                toReceiver:(nonnull id)receiver;

    Parameters

    name

    消息名称

    object

    消息对象

    userInfo

    用户信息

    receiver

    消息接收者

  • 发送类点对点消息

    Declaration

    Objective-C

    + (void)fw_sendMessage:(nonnull NSNotificationName)name
                toReceiver:(nonnull id)receiver;

    Parameters

    name

    消息名称

    receiver

    消息接收者

  • 发送类点对点消息,附带对象

    Declaration

    Objective-C

    + (void)fw_sendMessage:(nonnull NSNotificationName)name
                    object:(nullable id)object
                toReceiver:(nonnull id)receiver;

    Parameters

    name

    消息名称

    object

    消息对象

    receiver

    消息接收者

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

    Declaration

    Objective-C

    + (void)fw_sendMessage:(nonnull NSNotificationName)name
                    object:(nullable id)object
                  userInfo:(nullable NSDictionary *)userInfo
                toReceiver:(nonnull id)receiver;

    Parameters

    name

    消息名称

    object

    消息对象

    userInfo

    用户信息

    receiver

    消息接收者