Initial commit
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
//
|
||||
// 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
|
||||
Reference in New Issue
Block a user