我制作了一个拍照的应用。它由两个通过tabBarController
连接的视图控制器组成。其中一个viewControllers是相机屏幕。它有UIView
,其唯一目的是显示AVCaptureVideoPreviewLayer
的内容。
我已经连接了输入和输出,并在我的UIView
上显示了相机视图的实时反馈。由于我有tabBarController
连接的2个视图控制器,因此当用户选中其他viewController时,我确保每当我不在相机的viewController上时调用stopRunning
。
目前,我已将其实施如下:
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
session.startRunning()
}
override func viewWillDisappear(animated: Bool) {
super.viewWillDisappear(animated)
session.stopRunning()
}
每当我在相机屏幕上运行会话时,我的iPhone 5就会升温 - 这是我预期的 - 可能是由于AVCaptureVideoPreviewLayer
对象对资源的需求。我的上述尝试是在session
停止不需要的地方。但是,我觉得我还没有覆盖所有的理由。
如果我的应用转到后台,session
会继续吗?我使用了一些println
语句来跟踪我的viewController生命周期方法,并发现当app退役到后台时不会调用viewWillDisappear
。
这是否意味着我的session
继续投放并且我的相机仍在尝试提供Feed?我怀疑这可能是一个问题,因为手机在很长一段时间后仍然会感到温暖。