LuKane / KNPhotoBrowser

图片浏览器(本地和网络) ,视频浏览器 (本地和网络), 无耦合性,自定义控件,资源路径保存和获取, 完美适配 iPhone 以及 iPad ,屏幕旋转功能.
MIT License
373 stars 77 forks source link

发现了一个必崩的bug #68

Closed johnlzp closed 1 year ago

johnlzp commented 1 year ago

加载网络视频,当页面还没有完全加载出来( 菊花转动,页面黑色 ),立即退出预览页面,然后再次重复进入查看该网络视频,重复两次以上操作就会崩溃

johnlzp commented 1 year ago

版本: 2.5.9 iOS版本: 15.5 机型: 模拟器(iphone13 ProMax) 报错信息:Thread 1: EXC_BAD_ACCESS (code=1, address=0x6000000000000000)

LuKane commented 1 year ago

用新的版本即可!! 这个问题 当初我自己也发现了! 所以才更新了新的 pod版本

johnlzp commented 1 year ago

更新到了2.6.2,还是崩溃

johnlzp commented 1 year ago

因为我在页面左上角加了个退出按钮,调用dismiss方法,是不是和这个有关

johnlzp commented 1 year ago

因为我在页面左上角加了个退出按钮,调用dismiss方法,是不是和这个有关

解决了,确实直接调用dismiss造成的,按照手势cancel的流程解决了

Alex92908 commented 1 year ago

KNPhotoAVPlayerView以及KNPhotoLocateAVPlayerView的dealloc方法添加[self playerWillReset];的调用,避免avplayerItem的观察者没被释放造成崩溃(打开视频,左上角按钮关闭,再打开视频,崩溃),这样感觉更优。

LuKane commented 1 year ago

OK! 我回头看看

LuKane commented 1 year ago

我试了多次, 其实不会出现这种闪退的现象! 我的具体代码:

这里用一个属性:  weak去修饰
@property (nonatomic,weak  ) KNPhotoBrowser *photoBrowser;
点击某一个图片或视频进行展示图片或播放视频
KNPhotoBrowser *photoBrowser = [[KNPhotoBrowser alloc] init];

UIView *tempView = [[UIView alloc] initWithFrame:CGRectMake(50, 100, 90, 90)];
tempView.backgroundColor = UIColor.lightGrayColor;
[tempView addGestureRecognizer: [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tempViewDidClick)]];
[photoBrowser createOverlayViewArrOnTopView:@[tempView] animated:false followAnimated:true];

photoBrowser.itemsArr = [self.itemsArr copy];
photoBrowser.placeHolderColor = UIColor.lightTextColor;
photoBrowser.currentIndex = tap.view.tag;
photoBrowser.delegate = self;
photoBrowser.isSoloAmbient = true;
photoBrowser.isNeedPageNumView = true;
photoBrowser.isNeedRightTopBtn = false;
photoBrowser.isNeedLongPress = true;
photoBrowser.isNeedPanGesture = true;
photoBrowser.isNeedPrefetch = true;
photoBrowser.isNeedAutoPlay = true;
photoBrowser.isNeedOnlinePlay = true;
[photoBrowser present];
self.photoBrowser = photoBrowser;
取消视频播放, 相当于直接 dismiss
- (void)tempViewDidClick {
    [self.photoBrowser dismiss];
}

以上操作不会出现闪退现象!! 不知如何才能复现您这边提出的问题