[Swift] Class _NSZombie_OS_voucher is implemented in both ?? () and ?? (). One of the two will be used. Which one is undefined. が出た時の対処法1例

ITSwift

ビルドは成功するのですが、アプリを起動したら起こったこのエラー。

Class _NSZombie_OS_voucher is implemented in both ?? () and ?? (). One of the two will be used. Which one is undefined.

自分の場合はアプリケーションバンドルで音を読み込んで、クラス変数に代入してる箇所が原因でした。

メソッドに処理を移したら、エラーが消えました。

エラー発生:

class MainViewController: UIViewController {
    
    var buzzerPlayer: AVAudioPlayer?
    let buzzerURL = Bundle.main.bundleURL.appendingPathComponent("buzzer.mp3")
    
    override func viewDidLoad() {
        super.viewDidLoad()

        do {
            try buzzerPlayer = AVAudioPlayer(contentsOf:buzzerURL)
            
            buzzerPlayer?.prepareToPlay()
            buzzerPlayer?.volume = 2.0
            buzzerPlayer?.delegate = self
            
        } catch {
            print(error)
        }

    }
}

エラー解消:

class MainViewController: UIViewController {
    
    var buzzerPlayer: AVAudioPlayer?
    
    override func viewDidLoad() {
        super.viewDidLoad()

        let buzzerURL = Bundle.main.bundleURL.appendingPathComponent("buzzer.mp3")

        do {
            try buzzerPlayer = AVAudioPlayer(contentsOf:buzzerURL)
            
            buzzerPlayer?.prepareToPlay()
            buzzerPlayer?.volume = 2.0
            buzzerPlayer?.delegate = self
            
        } catch {
            print(error)
        }

    }
}

ググっていると、デバイスのアプリとシュミレーターのアプリが被っていることが原因というケースが多かったですが、自分の場合は違いました。

Class is implemented in both. One of the two will be used

https://stackoverflow.com/questions/30581884/class-is-implemented-in-both-one-of-the-two-will-be-used

iPhoneではエラーにならないのですが、iPadではエラーになるようでして、気づきませんでした。

アプリケーションバンドルの読み込みには今後注意しようと思います。

以上になります。

スポンサーリンク

Posted by nobuhiro harada