注意NSObject被回收

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、深复制和浅复制的区别? 1、浅复制:只是复制了指向对象的指针,即两个指针指向同一块内存单元!而不复制指向对象的...
    iOS_Alex阅读 5,286评论 1 27
  • 1.关于方法的执行顺序问题,代码示例如下: dispatch_after 第二个参数为0,可以理解为在当前时刻向主...
    oc123阅读 4,459评论 0 0
  • 1.设计模式是什么? 你知道哪些设计模式,并简要叙述?设计模式是一种编码经验,就是用比较成熟的逻辑去处理某一种类型...
    龍飝阅读 6,579评论 0 12
  • NSObject可以说是OC类的万物之源了,今天我们就来好好看看他的定义. /* NSObject.hCopyr...
    李某lkb阅读 3,982评论 0 0
  • 本节我们继续学习NSObject,这个类中的很多方法都是我们常用的,所以要重点学习,花点时间也是值得的。 一、实例...
    小曼blog阅读 3,535评论 0 2