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

    需要替代的对象