美文网首页
注意NSObject被回收

注意NSObject被回收

作者: 左卫门_6e62 | 来源:发表于2020-11-26 18:21 被阅读0次

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

相关文章

  • 注意NSObject被回收

    本人新手一个,对于objc以及swift与objc的混用完全不懂。但是对于swift对象的回收机制还是略知一二的。...

  • iOS - 基础知识

    NSObject p = [NSObject new];p release -> p指向的对象被销毁,内存不可用了...

  • 程序crash常见几种情况

    访问了一个已经被释放的对象,比如:NSObject * aObj = [[NSObject alloc] init...

  • CoreData data fault

    NSManagedContext被回收后,它查询出的数据也被回收,变为fault。

  • MRC期间的内存管理方式

    MRC引用计数规则 内存管理的范围:任何继承了NSObject的对象,对基本数据类型无效(系统会自动回收)相关名词...

  • Swift中使用KVO

    自己使用swift4.0写了一个例子 注意事项 观察者和被观察者都必须是 NSObject 的子类; 观察的属性需...

  • id和NSObject *和instanceType的区别与联系

    id 被成为万能指针,也就是可以指向任何对象.NSObject * 本身就是定义指向NSObject类型的指针.那...

  • 简述GC

    垃圾回收机制;在堆内存的有没有被引用的对象的时候就会被被触发回收;除了jvm自动回收之外(内存不足自动回收),也可...

  • 内存泄漏

    对象被引用着 会导致此对象不能被回收 一个对象 和另外一个对象相互引用着。 会发现 后被引用的对象先被回收然后回收...

  • 2、java垃圾回收算法

    GC收集机制一般会有几点需要注意:1、那些内存需要回收?2、什么时候回收?3、如何回收? 本文不会全部讲解完整,只...

网友评论

      本文标题:注意NSObject被回收

      本文链接:https://www.haomeiwen.com/subject/abdziktx.html