PLVVodMediaFWeakProxy
Objective-C
@interface PLVVodMediaFWeakProxy : NSProxy
Swift
class PLVVodMediaFWeakProxy : NSProxy
弱引用代理类
Note
用于解决某些系统方法会强制持有 self,导致不自动释放,而不走dealloc的问题// 创建 Timer 时,以 weakProxy 作为 target 参数
PLVVodMediaFWeakProxy * weakProxy = [PLVVodMediaFWeakProxy proxyWithTarget:self];
_timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:weakProxy selector:@selector(timerEvent:) userInfo:nil repeats:NO];
// 则 dealloc 会正常被调用,并可在此时对 Timer 进行释放
- (void)dealloc{
[_timer invalidate];
_timer = nil;
}
-
当前被替代的对象
Note
事件将仍然触发该target对象Declaration
Objective-C
@property (nonatomic, weak, readonly, nullable) id target;
Swift
weak var target: AnyObject? { get }
-
创建 weakProxy 弱引用代理对象 (对象方法)
Declaration
Objective-C
- (nonnull instancetype)initWithTarget:(nonnull id)target;
Swift
init(target: Any)
Parameters
target
需要替代的对象
-
创建 weakProxy 弱引用代理对象 (类方法)
Declaration
Objective-C
+ (nonnull instancetype)proxyWithTarget:(nonnull id)target;
Parameters
target
需要替代的对象