1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- //
- // YYWeakProxy.h
- // YYKit <https://github.com/ibireme/YYKit>
- //
- // Created by ibireme on 14/10/18.
- // Copyright (c) 2015 ibireme.
- //
- // This source code is licensed under the MIT-style license found in the
- // LICENSE file in the root directory of this source tree.
- //
- #import <Foundation/Foundation.h>
- 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 MyView {
- NSTimer *_timer;
- }
-
- - (void)initTimer {
- YYWeakProxy *proxy = [YYWeakProxy proxyWithTarget:self];
- _timer = [NSTimer timerWithTimeInterval:0.1 target:proxy selector:@selector(tick:) userInfo:nil repeats:YES];
- }
-
- - (void)tick:(NSTimer *)timer {...}
- @end
- */
- @interface YYWeakProxy : 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
|