// // KSYGPUViewCapture.h // KSYStreamer // // Created by yiqian on 1/30/16. // Copyright © 2016 yiqian. All rights reserved. // #import NS_ASSUME_NONNULL_BEGIN /** A proxy used to hold a weak object. It can be used to avoid retain cycles, such as the target in NSTimer or CADisplayLink. sample code: @implementation ViewController { NSTimer *_timer; } - (void)initTimer { KSYWeakProxy *proxy = [KSYWeakProxy proxyWithTarget:self]; _timer = [NSTimer timerWithTimeInterval:0.1 target:proxy selector:@selector(tick:) userInfo:nil repeats:YES]; } - (void)tick:(NSTimer *)timer {...} @end */ @interface KSYWeakProxy : NSProxy /** The proxy target. */ @property (nullable, nonatomic, weak, readonly) id target; /** Creates a new weak proxy for target. @param target Target object. @return A new proxy object. */ - (instancetype)initWithTarget:(id)target; /** Creates a new weak proxy for target. @param target Target object. @return A new proxy object. */ + (instancetype)proxyWithTarget:(id)target; @end NS_ASSUME_NONNULL_END