NSProxy

作者: Smallwolf_JS | 来源:发表于2020-06-15 17:29 被阅读0次

一般我们都使用proxy来做消息转发的桥,或者是利用它来避免循环引用,timer等
但是针对支持iOS8的通知是否可以呢
先上代码
proxy.h

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface TTProxy : NSProxy

+ (TTProxy *)proxyWithTarget:(id)obj;
@end

NS_ASSUME_NONNULL_END

proxy.m

#import "TTProxy.h"

@interface TTProxy ()

@property (nonatomic,weak) id obj;

@end

@implementation TTProxy
+(TTProxy *)proxyWithTarget:(id)obj{
    TTProxy * p = [TTProxy alloc];
    p.obj = obj;
    return p;
    
}
- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector{
    NSMethodSignature *sig = nil;
    sig = [self.obj methodSignatureForSelector:aSelector];
    return sig;
}


- (void)forwardInvocation:(NSInvocation *)anInvocation{
    [anInvocation invokeWithTarget:self.obj];
}
@end
  • 下面这种写法当前对象的funciton是可以响应的
TTProxy * tt = [TTProxy proxyWithTarget:self];

[[NSNotificationCenter defaultCenter] addObserver:tt selector:@selector(function) name:nil object:nil];
[[NSNotificationCenter defaultCenter] postNotificationName:@"123" object:nil];
  • 下面这种写法当前对象的funciton是不能响应的,根本不回走消息转发
[[NSNotificationCenter defaultCenter] addObserver:[TTProxy proxyWithTarget:self] selector:@selector(function) name:nil object:nil];
[[NSNotificationCenter defaultCenter] postNotificationName:@"123" object:nil];

知道是为啥么?

相关文章

  • 重拾iOS-NSProxy

    关键词:NSProxy,NSObject,Runtime 面试题:1)知道NSProxy吗?2)NSProxy和N...

  • NSProxy

    NSProxy.h文件内容 NSProxy 是一个抽象类NSProxy遵守了 NSObject 协议,内部有它的 ...

  • NSProxy、NSInvocation、NSMethodSig

    什么是NSProxy: NSProxy是一个抽象的基类,是根类,与NSObject类似 NSProxy和NSObj...

  • [iOS] 七七八八的小姿势(2)

    目录: NSProxy 字典集合对成员的引用方式 class判断 block变量捕获 1. NSProxy NSP...

  • NSProxy 和 NSObject 关系

    一、NSProxy 简介NSProxy 是一个抽象类,它实现了protocol NSObject 所要求的基本方法...

  • 老生常谈之NSProxy和NSTimer

    网上NSProxy和NSTimer都写烂了,所以这里只做下总结: 1.NSProxy应用场景: 解决NSTimer...

  • NSProxy

    NSProxy——少见却神奇的类 - IOS - 伯乐在线

  • NSProxy

    吾尝以为NSObject是Apple的所有Objective-C引用类型的老祖宗,直到后来知道了NSProxy的存...

  • NSProxy

    作用一: 代理想要拦截自定义CPTabBarController(UITabBarController子类)中ta...

  • NSProxy

    它来实现一下"伪多继承". 直接上个代码来展示下 使用方法 控制台输出结果 发现没有,猫发出消息已经被子类的内部拦...

网友评论

      本文标题:NSProxy

      本文链接:https://www.haomeiwen.com/subject/xsjhxktx.html