本人新手一个,对于objc以及swift与objc的混用完全不懂。
但是对于swift对象的回收机制还是略知一二的。今天就遇到了一个坑,这里记录下。
背景是我要监听AVPlayer的播放状态,需要调用到playerItem.addObserver
方法,该方法需要传入一个NSObject,于是我就自定义了一个类继承自NSObject。因为根据swift的经验,addObserver
方法内部一定会长期保持对该NSObject的引用,不用担心这个NSObject被回收,所以我直接为NSObject创建了一个局部变量并传给了addObserver
。
然后运行,播放视频,问题出现了,大致为objc的BAD_ACCESS错误。
为NSObject定义deinit,发现被调用。
于是把该对象引用赋值给类变量,问题解决。
个人猜测NSObject的回收机制是与普通swift类不同的。以后项目复杂了,这类问题可能会很难debug,所以在这里记录下。
注意NSObject被回收
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。