//
|
// YYTextWeakProxy.h
|
// YYText <https://github.com/ibireme/YYText>
|
//
|
// 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 {
|
YYTextWeakProxy *proxy = [YYTextWeakProxy proxyWithTarget:self];
|
_timer = [NSTimer timerWithTimeInterval:0.1 target:proxy selector:@selector(tick:) userInfo:nil repeats:YES];
|
}
|
|
- (void)tick:(NSTimer *)timer {...}
|
@end
|
*/
|
@interface YYTextWeakProxy : 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
|