美文网首页iOS表格绘制
iOS 崩溃 Cannot form weak referenc

iOS 崩溃 Cannot form weak referenc

作者: 万年老参 | 来源:发表于2022-01-09 11:01 被阅读0次

iOS 崩溃 Cannot form weak reference to instance (0xxxxxxx) of class xxxx. It is possible that this ...

最近开发过程中有遇到几次崩溃。出现在app刚启动时,但是不是必现的,当时没仔细看,以为影响不大。并且崩溃的地方在一个封装的播放器里面,之前几个版本也都是用的这个播放器,并没有影响审核。
直到一次因为启动崩溃导致审核没通过,才开始重视这个问题。

造成崩溃的原因是在- (void)dealloc 方法里面,用weak指针指向了self。或者delloc里面调用的方法中,有weak指针指向self。

我的代码中出现的错误:

A类:其中包含播放器参数B

- (void)dealloc
{
//此处会默认释放B
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}

B类:

- (void)dealloc {    
    [self releaseLastPlayer];    //问题就出在这个方法里面,下面给出来
     self.avPlayer = nil;    
    [self reactivateCirclePlayNoti]; 
}
- (void) releaseLastPlayer {    

    // 停止预加载  
      if (self.resourceLoader) {        
            [self.resourceLoader endLoading];   
     }    
     if (self.avPlayer) {   //注意这里的self.avplayer
        //大概就是一些释放操作
    }
}
//到此都没问题。但是重点来了。。这里用到了懒加载
-(avplayer *)avplayer
{
    __weak typeof(self) wself = self
    后面大概就是初始化avplayer,以及将delegate啥的赋值wself
}

/////解决方式,

 if (self.avPlayer) 
改为
 if (_avPlayer) {   

相关文章

网友评论

    本文标题:iOS 崩溃 Cannot form weak referenc

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