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) {
网友评论