#iOS笔记#NSProxy

NSProxy

class.h

@interface AAA : NSProxy

@property (nonatomic, weak) id target;
- (instancetype)initWithTarget:(id)target;
+ (instancetype)proxyWithTarget:(id)target;

@end

class.m

@implementation AAA

- (instancetype)initWithTarget:(id)target{
  _target = target;
  return self;
}

+ (instancetype)proxyWithTarget:(id)target{
  return [[self alloc] initWithTarget:target];
}

- (NSMethodSignature *)methodSignatureForSelector:(SEL)sel{
  return [self.target methodSignatureForSelector:sel];
}

- (void)forwardInvocation:(NSInvocation *)invocation{
  SEL sel = [invocation selector];
  if ([self.target respondsToSelector:sel]) {
    [invocation invokeWithTarget:self.target];
  }
}

- (BOOL)respondsToSelector:(SEL)aSelector{
  return [self.target respondsToSelector:aSelector];
}

@end
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。