2016-06-28 1 views
1

이 오류가 발생했으며 이유를 모르겠습니다. 오늘을 신속 배우기 시작했다클래스 AppDelegate : UIResponder, UIApplicationDelegate {SWIFT의 SIGABIRT 오류

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) 
} 

+3

질문을 게시 할 때 조금 생각해보십시오. 형식 지정이나 구두점 검토 등을 사용하여 코드를 잘라내어 붙여 넣기 만하면됩니다. 'touchDigit'메소드에는 어떤 것이 있습니까? – Adrian

답변

2

는 스토리 보드/XIB에서 액션을 바인딩 해제 시도 주셔서 감사합니다 무슨 일이 일어나고 있는지 모르고있다 그런 다음 리 바인드합니다.

나는 오류에서 누락 된 : (인수가 있기 때문에이 [ViewController touchDigit:]해야한다)에 따라, 당신은 당신의 스토리 보드를 설정 후 인수 sender을 추가 같은데요.

방금 ​​테스트 한 내용이며 다시 바인딩하면 스토리 보드에 touchDigit이라는 이름이 있더라도 touchDigitWithSender으로 표시됩니다. 아마도 이상한 Swift/Objective-C 상호 운용성 문제 일 수 있습니다.


P. internal이 기본 액세스 지정자이므로 모든 선언에 추가하지 않아도됩니다.

+0

매우 유용한 답변 - 저는 Swift 3 프로젝트를 업데이트했습니다. 왜 처음 버튼을 누르면 응용 프로그램이 충돌하는지 궁금합니다. 이 문제가 해결되었습니다. – dumbledad

관련 문제