类 AppDelegate: UIResponder, UIApplicationDelegate SWIFT 中的 SIGABIRT 错误

Posted

技术标签:

【中文标题】类 AppDelegate: UIResponder, UIApplicationDelegate SWIFT 中的 SIGABIRT 错误【英文标题】:class AppDelegate: UIResponder, UIApplicationDelegate SIGABIRT ERROR in SWIFT类 AppDelegate: UIResponder, UIApplicationDelegate SWIFT 中的 SIGABIRT 错误 【发布时间】:2016-06-28 00:47:13 【问题描述】:

我得到了这个错误,我不知道为什么? 我今天开始学swift了

2016-06-28 02:40:03.393 Calculator[7072:173608] -[Calculator.ViewController touchDigit]: unrecognized selector sent to instance 0x7fc4a9465000
2016-06-28 02:40:03.400 Calculator[7072:173608] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[Calculator.ViewController touchDigit]: unrecognized selector sent to instance 0x7fc4a9465000'
*** First throw call stack:
(
    0   CoreFoundation                      0x0000000100c40e65 __exceptionPreprocess + 165
    1   libobjc.A.dylib                     0x0000000102980deb objc_exception_throw + 48
    2   CoreFoundation                      0x0000000100c4948d -[NSObject(NSObject) doesNotRecognizeSelector:] + 205
    3   CoreFoundation                      0x0000000100b9690a ___forwarding___ + 970
    4   CoreFoundation                      0x0000000100b964b8 _CF_forwarding_prep_0 + 120
    5   UIKit                               0x000000010145f194 -[UIApplication sendAction:to:from:forEvent:] + 92
    6   UIKit                               0x00000001015ce6fc -[UIControl sendAction:to:forEvent:] + 67
    7   UIKit                               0x00000001015ce9c8 -[UIControl _sendActionsForEvents:withEvent:] + 311
    8   UIKit                               0x00000001015cdaf8 -[UIControl touchesEnded:withEvent:] + 601
    9   UIKit                               0x00000001014ce49b -[UIWindow _sendTouchesForEvent:] + 835
    10  UIKit                               0x00000001014cf1d0 -[UIWindow sendEvent:] + 865
    11  UIKit                               0x000000010147db66 -[UIApplication sendEvent:] + 263
    12  UIKit                               0x0000000101457d97 _UIApplicationHandleEventQueue + 6844
    13  CoreFoundation                      0x0000000100b6ca31 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
    14  CoreFoundation                      0x0000000100b6295c __CFRunLoopDoSources0 + 556
    15  CoreFoundation                      0x0000000100b61e13 __CFRunLoopRun + 867
    16  CoreFoundation                      0x0000000100b61828 CFRunLoopRunSpecific + 488
    17  GraphicsServices                    0x0000000105256ad2 GSEventRunModal + 161
    18  UIKit                               0x000000010145d610 UIApplicationMain + 171
    19  Calculator                          0x0000000100a6361d main + 109
    20  libdyld.dylib                       0x000000010348992d start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb) 

我的主班只有这个简单的方法不知道发生了什么

import UIKit

internal class ViewController : UIViewController 

    @IBAction internal func touchDigit(sender: UIButton)

谢谢

【问题讨论】:

发布问题时,请考虑一下。您只需使用零格式或检查标点符号等剪切和粘贴代码。touchDigit 方法中有什么? 【参考方案1】:

尝试在情节提要/xib 中取消绑定您的操作,然后重新绑定它。

我根据错误中缺少的: 猜测(它应该是[ViewController touchDigit:],因为有一个参数),你添加了参数sender 设置它之后你的故事板。

我自己对此进行了测试,当重新绑定它时,故事板将其显示为touchDigitWithSender,尽管它保留了名称touchDigit。可能是一些奇怪的 Swift/Objective-C 互操作性问题。


附: internal 是默认访问说明符,您不必将其添加到每个声明中

【讨论】:

非常有用的答案 - 我刚刚将我的项目更新到 Swift 3 并且一直想知道为什么现在按下第一个按钮会使应用程序崩溃。这解决了它。

以上是关于类 AppDelegate: UIResponder, UIApplicationDelegate SWIFT 中的 SIGABIRT 错误的主要内容,如果未能解决你的问题,请参考以下文章

AppDelegate 在类列表中不可用

为啥类 AppDelegate 继承自 UIResponder?

类 AppDelegate: UIResponder, UIApplicationDelegate SWIFT 中的 SIGABIRT 错误

AppDelegate和ViewController类之间的iOS区别[关闭]

为啥我在 AppDelegate 中的 AVPlayer 类引用返回 nil?

代码在AppDelegate中工作,但在任何其他类中都没有