最近有個需求,設置播放器播放音頻時,要求離開當前播放頁面也是可以播放的,然後整個項目都是采用storyboard拖拽,播放器設置是采用KVO通知的,當我點擊返回時,發現播放器控制對象被釋放了,然後導致程序崩潰。於是發現了在storyboard中拖拽的ViewController采用push或者modal彈出時,當點擊返回離開當前頁面時,strong類型修飾的變量被釋放,於是采用代碼形式初始化播放頁面的ViewController.詳見如下代碼:
@property (nonatomic,strong)CoursePlayViewController *courseVC;
- (void)enterPlayViewController
{}
- (UIViewController *)getCurrentVC
{
UIViewController *result = nil;
UIWindow * Window = [[UIApplication sharedApplication] keyWindow];
if (window.windowLevel != UIWindowLevelNormal)
{
NSArray *windows = [[UIApplication sharedApplication] windows];
for(UIWindow * tmpWin in windows)
{
if (tmpWin.windowLevel == UIWindowLevelNormal)
{
window = tmpWin;
break;
}
}
}
UIView *frontView = [[window subviews] objectAtIndex:0];
id nextResponder = [frontView nextResponder];
if ([nextResponder isKindOfClass:[UIViewController class]])
result = nextResponder;
else
result = window.rootViewController;
return result;
}
[self getCurrentVC] 是獲取當前頁面的視圖控制器的方法。
【關於Storyboard拖拽的ViewController返回上一層時有對象被釋放】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!