从另一个视图控制器暂停AvAudioPlayer会返回EXC_BAD_ACCESS Swift

时间:2015-07-05 15:04:47

标签: ios swift ios8 avaudioplayer exc-bad-access

我是一个基于页面的应用程序,其中根视图控制器有一个按钮,用于暂停数据视图控制器中的AVAudioPlayer。 我理所当然地知道根和数据视图控制器如何工作。我看起来像this

当我按下按钮时,我得到一个EXC_BAD_ACCESS。但是,当我从数据视图控制器上的按钮暂停时,它可以正常工作而不会发生崩溃。我试过了:

•在功能中添加暂停代码并调用功能

var dataView = self.storyboard?.instantiateViewControllerWithIdentifier("DataViewController") as! DataViewController
dataView.pause()

dataViewController

func pause() {
    player.pause()
}

•在dataView中调用一个函数来调用暂停播放器的函数

•试图用

打电话
dataViewController().player.pause()

•试图在player.prepareForPlay()

之前致电player.pause

所有这些都给了我同样的错误。是不是因为rootViewController没有权限在dataViewController中编辑player

1 个答案:

答案 0 :(得分:1)

此代码:

dataViewController().player.pause()

创建DataViewController的新实例。那个新实例没有声音播放器。不要那样做。您需要一种方法来获取指向现有dataViewController实例的指针。

顺便说一下,你应该遵循命名类和类型的Swift命名约定,以大写字母开头。因此,班级名称应为DataViewController