线程 1:“-[Xylophone.ViewController buttonClicked:]:无法识别的选择器发送到实例 0x7ff83a6074e0”

Posted

技术标签:

【中文标题】线程 1:“-[Xylophone.ViewController buttonClicked:]:无法识别的选择器发送到实例 0x7ff83a6074e0”【英文标题】:Thread 1: "-[Xylophone.ViewController buttonClicked:]: unrecognized selector sent to instance 0x7ff83a6074e0" 【发布时间】:2020-09-29 09:20:34 【问题描述】:

Exception NSException * "-[Xylophone.ViewController buttonClicked:]: 无法识别的选择器发送到实例 0x7faa47409400" 0x0000600002148690

我正在尝试制作一个木琴应用程序,其中的按钮可以播放不同的声音,有 7 个按钮,但只有第一个按钮不起作用,所有其他按钮都起作用。在按下第一个按钮时应用程序崩溃。

代码如下:

import UIKit
import AVFoundation

class ViewController: UIViewController 
    
    var player: AVAudioPlayer!

    override func viewDidLoad() 
        super.viewDidLoad()
        
    

    @IBAction func keyPressed(_ sender: UIButton) 
        playSound(soundName: sender.currentTitle!)
    
    
    func playSound(soundName:String) 
        let url = Bundle.main.url(forResource: soundName, withExtension: "wav")
        
        
        player = try! AVAudioPlayer(contentsOf: url!)
        player.play()
                
    

这里有什么问题?

【问题讨论】:

您之前定义了一个名为buttonClicked 的方法,现在它已重命名为keyPressed:,不是吗?但是您在 Storyboard 中使用以前的名称创建了链接。所以撤消链接,然后重做。 非常感谢,一切正常!! 【参考方案1】:

我遇到了同样的问题,我是这样解决的: 右键单击Main.storyboard 中的每个按钮,然后在小菜单中检查它的连接,如下所示:

当我有多个连接时,它给了我这个错误。

【讨论】:

以上是关于线程 1:“-[Xylophone.ViewController buttonClicked:]:无法识别的选择器发送到实例 0x7ff83a6074e0”的主要内容,如果未能解决你的问题,请参考以下文章

Java多线程:线程池详解

Java 并发编程 -- 并发编程线程基础(线程创建与运行线程通知与等待join / sleep / yield方法线程中断线程上下文切换死锁守护线程与用户线程ThreadLocal)

Java 并发编程 -- 并发编程线程基础(线程创建与运行线程通知与等待join / sleep / yield方法线程中断线程上下文切换死锁守护线程与用户线程ThreadLocal)

linux--线程

C++11多线程第一篇:并发基本概念及实现,进程线程基本概念

C++11多线程第一篇:并发基本概念及实现,进程线程基本概念