質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

1289閲覧

Swiftのデバックの見るアプローチ

pegy

総合スコア243

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

1クリップ

投稿2020/03/20 00:54

教科書で学んでいる以下のコードでシュミレーター上cymbalのボタンを押すと想定していた音("cymbal.mp3")がなるのですが、guiterのボタンを押すと音("guitar.mp3")がならずに
大量のエラーがdebugに出力されます。

まだ初心者でXcodeのデバッグの見方がわからないので教えていただきたいです
環境>
xcode:11.3
version 5.1.3

出力されたエラーについては以下の通りです。xcodeではdebug navigatorエリアが表示され
AppDelegate.swiftのファイルがxcode上で立ち上がりThread1 の12 main
class AppDelegate: UIResponder, UIApplicationDelegate {
の箇所に赤くSignal SIGABRTのアラートが記載されていいます。

1.そもそもDebugエリアに表示されるエリアとdebug navigatorエリアの内容はどの様な関係にあり、エラーを解消するためにはどちらの内容にアプローチすれば良いのでしょうか?また両者はどの様な関係にあるのでしょうか?
2.また、例えば今回の様なエラーが生じた場合に一般的にどの箇所に着目して、どの様に当たりをつければいいのでしょうか?

XcodeとSwiftに触れてまだ一週間も立たないため、Debugについて、本当に初心者の様な質問で恐縮ですがアドバイスをいただけると大変嬉しいです。
よろしくお願い申しあげます。

Swift

1//ViewController.swift 2import UIKit 3import AVFoundation 4 5class ViewController: UIViewController { 6 7 override func viewDidLoad() { 8 super.viewDidLoad() 9 // Do any additional setup after loading the view. 10 } 11 12 // シンバルの音源ファイルを指定 13 let cymbalPath = Bundle.main.bundleURL.appendingPathComponent("cymbal.mp3") 14 15 // シンバル用​プレイヤーの変数 16 var cymbalPlayer: AVAudioPlayer! 17 18 @IBAction func cymbal(_ sender: Any) { 19 do { 20 // シンバル用のプレイヤーに、音源ファイル名を指定 21 cymbalPlayer = try AVAudioPlayer(contentsOf: cymbalPath, fileTypeHint: nil) 22 //シンバルの音源再生 23 cymbalPlayer.play() 24 } catch { 25 print("シンバルで、エラーが発生しました!") 26 } 27 } 28 29 // ギターの音源ファイルを指定 30 let guitarPath = Bundle.main.bundleURL.appendingPathComponent("guitar.mp3") 31 32 // ギター用プレイヤーの変数 33 var guitarPlayer: AVAudioPlayer! 34 35 // ギターがタップされた時の処理 36 @IBAction func guitar(_ sender: Any) { 37 do { 38 // ギター用のプレイヤーに、音源ファイル名を指定 39 guitarPlayer = try AVAudioPlayer(contentsOf: guitarPath, fileTypeHint: nil) 40 guitarPlayer.play() 41 } catch { 42 print("ギターで、エラーが発生しました!") 43 } 44 } 45} 46

Debug

12020-03-20 09:42:51.113706+0900 MyMusic[53872:5295338] [plugin] AddInstanceForFactory: No factory registered for id <CFUUID 0x6000002c3c80> F8BB1C28-BAE8-11D6-9C31-00039315CD46 22020-03-20 09:42:52.796975+0900 MyMusic[53872:5295558] HALC_ProxyIOContext::IOWorkLoop: failed to send the final message to the server, Error: 0x10000003 32020-03-20 09:42:52.799446+0900 MyMusic[53872:5295622] HALC_ProxyIOContext::IOWorkLoop: failed to get the IOPort 42020-03-20 09:42:52.801005+0900 MyMusic[53872:5295489] CA_UISoundClient.cpp:241:StartPlaying_block_invoke: CA_UISoundClientBase::StartPlaying: AddRunningClient failed (status = -66681). 52020-03-20 09:42:52.804565+0900 MyMusic[53872:5295338] HALB_IOThread::_Start: there already is a thread 62020-03-20 09:42:52.880974+0900 MyMusic[53872:5295738] [aqme] AQMEIO_HAL.cpp:1458:IOProc: AQDefaultDevice: Abandoning I/O cycle because reconfig pending (1). 72020-03-20 09:42:53.531075+0900 MyMusic[53872:5295338] [aqme] AQME.h:254:IOProcFailure: Client(0x7f9e56810400) did not see 20 I/O cycles; giving up (-1 susp) 82020-03-20 09:43:03.133841+0900 MyMusic[53872:5296024] HALC_ProxyIOContext::IOWorkLoop: failed to send the final message to the server, Error: 0x10000003 92020-03-20 09:43:03.213291+0900 MyMusic[53872:5296060] [aqme] AQMEIO_HAL.cpp:1458:IOProc: AQDefaultDevice: Abandoning I/O cycle because reconfig pending (21). 102020-03-20 09:43:03.862961+0900 MyMusic[53872:5295338] [aqme] AQME.h:254:IOProcFailure: Client(0x7f9e5882d400) did not see 20 I/O cycles; giving up (-1 susp) 112020-03-20 09:43:09.475768+0900 MyMusic[53872:5295338] -[MyMusic.ViewController guiter:]: unrecognized selector sent to instance 0x7f9e58105e50 122020-03-20 09:43:09.483773+0900 MyMusic[53872:5295338] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[MyMusic.ViewController guiter:]: unrecognized selector sent to instance 0x7f9e58105e50' 13*** First throw call stack: 14( 15 0 CoreFoundation 0x00007fff23c7127e __exceptionPreprocess + 350 16 1 libobjc.A.dylib 0x00007fff513fbb20 objc_exception_throw + 48 17 2 CoreFoundation 0x00007fff23c91fd4 -[NSObject(NSObject) doesNotRecognizeSelector:] + 132 18 3 UIKitCore 0x00007fff480c0f17 -[UIResponder doesNotRecognizeSelector:] + 302 19 4 CoreFoundation 0x00007fff23c75c4c ___forwarding___ + 1436 20 5 CoreFoundation 0x00007fff23c77f78 _CF_forwarding_prep_0 + 120 21 6 UIKitCore 0x00007fff48093fff -[UIApplication sendAction:to:from:forEvent:] + 83 22 7 UIKitCore 0x00007fff47a6c00e -[UIControl sendAction:to:forEvent:] + 223 23 8 UIKitCore 0x00007fff47a6c358 -[UIControl _sendActionsForEvents:withEvent:] + 398 24 9 UIKitCore 0x00007fff47a6b2b7 -[UIControl touchesEnded:withEvent:] + 481 25 10 UIKitCore 0x00007fff480cebbf -[UIWindow _sendTouchesForEvent:] + 2604 26 11 UIKitCore 0x00007fff480d04c6 -[UIWindow sendEvent:] + 4596 27 12 UIKitCore 0x00007fff480ab53b -[UIApplication sendEvent:] + 356 28 13 UIKitCore 0x00007fff4812c71a __dispatchPreprocessedEventFromEventQueue + 6847 29 14 UIKitCore 0x00007fff4812f1e0 __handleEventQueueInternal + 5980 30 15 CoreFoundation 0x00007fff23bd4471 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17 31 16 CoreFoundation 0x00007fff23bd439c __CFRunLoopDoSource0 + 76 32 17 CoreFoundation 0x00007fff23bd3b74 __CFRunLoopDoSources0 + 180 33 18 CoreFoundation 0x00007fff23bce87f __CFRunLoopRun + 1263 34 19 CoreFoundation 0x00007fff23bce066 CFRunLoopRunSpecific + 438 35 20 GraphicsServices 0x00007fff384c0bb0 GSEventRunModal + 65 36 21 UIKitCore 0x00007fff48092d4d UIApplicationMain + 1621 37 22 MyMusic 0x000000010d14674b main + 75 38 23 libdyld.dylib 0x00007fff5227ec25 start + 1 39) 40libc++abi.dylib: terminating with uncaught exception of type NSException 41(lldb)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

デバッグの際に見るべきなのは、エラーメッセージの

2020-03-20 09:43:09.483773+0900 MyMusic[53872:5295338] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[MyMusic.ViewController guiter:]: unrecognized selector sent to instance 0x7f9e58105e50'

この行で、-[MyMusic.ViewController guiter:]: unrecognized selector sent というのが落ちた理由になります。特に、-[MyMusic.ViewController guiter:] がメソッド名を表しいますが、Objective-C の表記なので、Swift ではちょっと分かりにくいですね。
これは、MyMusic アプリの ViewController クラスのインスタンスに対して、guiter(:) メソッドが呼ばれたけど、そんなものは存在しない、という意味になります。そして、ViewController クラスをよく見ると、guitar というメソッドがあり、スペルが間違ってることがわかります。
このメソッドを指定しているのがどこかは知りませんが、Storyboard で画面を作ってるならギターボタンの action をご確認ください。

投稿2020/03/20 01:31

hoshi-takanori

総合スコア7895

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pegy

2020/03/20 01:51

なるほど、今回のエラーに対するアプローチがよくわかりました。 ありがとうございます。 AppDelegate.swiftの側のアラートは実務的にはあまり見る機会はないのでしょうか?
hoshi-takanori

2020/03/20 02:27

AppDelegate.swift の Signal SIGABRT は、Xcode が原因を簡単に見つけられない場合によく出るんですが、実際には AppDelegate.swift が原因だったことはほとんどありません。
pegy

2020/03/20 14:16

ご教示いただきありがとうございます。 大変勉強になりました。 改めて、厚く御礼申し上げます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問