注意NSObject被回收

本人新手一个,对于objc以及swift与objc的混用完全不懂。
但是对于swift对象的回收机制还是略知一二的。今天就遇到了一个坑,这里记录下。
背景是我要监听AVPlayer的播放状态,需要调用到playerItem.addObserver方法,该方法需要传入一个NSObject,于是我就自定义了一个类继承自NSObject。因为根据swift的经验,addObserver方法内部一定会长期保持对该NSObject的引用,不用担心这个NSObject被回收,所以我直接为NSObject创建了一个局部变量并传给了addObserver
然后运行,播放视频,问题出现了,大致为objc的BAD_ACCESS错误。
为NSObject定义deinit,发现被调用。
于是把该对象引用赋值给类变量,问题解决。
个人猜测NSObject的回收机制是与普通swift类不同的。以后项目复杂了,这类问题可能会很难debug,所以在这里记录下。

你可能感兴趣的:(注意NSObject被回收)