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

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

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

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

Q&A

解決済

2回答

3945閲覧

libc++abi.dylib: terminating with uncaught exception of type NSExceptionが実機でのみ発生する

naokun

総合スコア13

Swift

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

0グッド

0クリップ

投稿2018/03/10 14:33

編集2018/03/11 02:47

イメージ説明
コードを書き終わり、シミュレーターでの実行も成功したので自分の端末にインストールしようとしたらこの様なエラーが発生しました。何回か類似するもの(Storyboard上での関連付け問題)を見た事があったので真っ先にチェックしましたが何の問題もありませんでした(よくよく考えるとそれならSimulatorでも発生する)。ボタンを押した後にクラッシュするので恐らく処理に使っているUIImagePickerControllerの問題だと思うのですが何故シミュレーターでは問題なく動作するのでしょうか?何方か教えてください。

Swift

1//コードの一部を載せておきます 2 @IBAction func loadFile(_: Any) { 3 openPicker(sourceType: UIImagePickerControllerSourceType.photoLibrary) 4 } 5 6 func openPicker(sourceType: UIImagePickerControllerSourceType) { 7 if !UIImagePickerController.isSourceTypeAvailable(sourceType) { 8 showAlert(title: "フォトライブラリ", text: "アクセスできません") 9 return 10 } 11 let picker = UIImagePickerController() 12 print("1") 13 picker.sourceType = sourceType 14 print("2") 15 picker.delegate = self 16 print("3") 17 present(picker, animated: false, completion: nil) 18 } 19 20 func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 21 print("4") 22 //この4がログにないのでこの動作が始まる前にクラッシュしていると思われる 23 let image = info[UIImagePickerControllerOriginalImage] as! UIImage 24 picker.presentingViewController?.dismiss(animated: true, completion: nil) 25 }

bt出力の結果〜

  • thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGABRT
    frame #0: 0x0000000190cf1014 libsystem_kernel.dylib__pthread_kill + 8 frame #1: 0x0000000190dbb264 libsystem_pthread.dylibpthread_kill + 112
    frame #2: 0x0000000190c659c4 libsystem_c.dylibabort + 140 frame #3: 0x00000001907311b0 libc++abi.dylibabort_message + 132
    frame #4: 0x000000019074ac04 libc++abi.dylibdefault_terminate_handler() + 304 frame #5: 0x0000000190758820 libobjc.A.dylib_objc_terminate() + 124
    frame #6: 0x00000001907475d4 libc++abi.dylibstd::__terminate(void (*)()) + 16 frame #7: 0x00000001907471a8 libc++abi.dylib__cxa_rethrow + 144
    frame #8: 0x00000001907586f8 libobjc.A.dylibobjc_exception_rethrow + 44 frame #9: 0x0000000191bd2e10 CoreFoundationCFRunLoopRunSpecific + 532
    frame #10: 0x000000019363c074 GraphicsServicesGSEventRunModal + 100 frame #11: 0x0000000197e8d058 UIKitUIApplicationMain + 208
    • frame #12: 0x000000010005d0d0 appnamemain at AppDelegate.swift:12 frame #13: 0x0000000190be159c libdyld.dylibstart + 4

*シミュレーターでは予想していた様に動いたので端末関連の問題かもしれないんですけど、既に二台試しましたが同じ結果に収まりました。
*Github: https://github.com/narry0966/0xBF

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

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

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

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

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

fuzzball

2018/03/10 17:38 編集

「ボタンを押した後」は何のボタンでしょうか?あと、止まった後にConsoleで bt と入力して出力を教えて下さい。
naokun

2018/03/11 00:51 編集

@IBAction func loadFileです、出力は* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGABRT frame #0: 0x0000000190cf1014 libsystem_kernel.dylib`__pthread_kill + 8 frame #1: 0x0000000190dbb264 libsystem_pthread.dylib`pthread_kill + 112 frame #2: 0x0000000190c659c4 libsystem_c.dylib`abort + 140 frame #3: 0x00000001907311b0 libc++abi.dylib`abort_message + 132 frame #4: 0x000000019074ac04 libc++abi.dylib`default_terminate_handler() + 304 frame #5: 0x0000000190758820 libobjc.A.dylib`_objc_terminate() + 124 frame #6: 0x00000001907475d4 libc++abi.dylib`std::__terminate(void (*)()) + 16 frame #7: 0x00000001907471a8 libc++abi.dylib`__cxa_rethrow + 144 frame #8: 0x00000001907586f8 libobjc.A.dylib`objc_exception_rethrow + 44 frame #9: 0x0000000191bd2e10 CoreFoundation`CFRunLoopRunSpecific + 532 frame #10: 0x000000019363c074 GraphicsServices`GSEventRunModal + 100 frame #11: 0x0000000197e8d058 UIKit`UIApplicationMain + 208 * frame #12: 0x000000010005d0d0 appname`main at AppDelegate.swift:12 frame #13: 0x0000000190be159c libdyld.dylib`start + 4でした
fuzzball

2018/03/12 01:16

解決したのであればcloseして下さい。
guest

回答2

0

https://teratail.com/questions/103154
ここと同様の症状ではないでしょうか?

投稿2018/03/10 16:13

black_sleepman

総合スコア220

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

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

naokun

2018/03/10 16:57

全ての動作の関連付けを外してもう一度やりましたが、治っていないので違うかと
black_sleepman

2018/03/10 17:02

presentではなく、self.presentViewControllerではダメですか?
naokun

2018/03/11 00:21

ダメでした.......というかpresentViewControllerにするとpresentに直せってエラーが出ますね
guest

0

ベストアンサー

info.plistに下記の設定はしていますでしょうか?

Privacy – Photo Library Additions Usage Description

権限が足りていないのかなと思いました。

投稿2018/03/11 00:33

newmt

総合スコア1277

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

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

naokun

2018/03/11 00:52 編集

確認しましたが設定はしていました 追記:そのAdditionsというものが入っていないといけないのでしょうか?ただ実機のみで発生するので権限等ではなさそうです、端末の設定を見ましたが許可されていますね
newmt

2018/03/11 02:21

>そのAdditionsというものが入っていないといけないのでしょうか? 画像を保存する場合はPhoto Library Usage Description、Photo Library Additions Usage Descriptionが必要ですが、今回の場合は参照だけでしたのでPhoto Library Usage Descriptionだけで十分でした。失礼しました。また、設定されているとのことでしたので、今回の問題とは関係ないようです。 https://stackoverflow.com/questions/45789485/swift-ios-uiimagepickers-photo-library-is-presented-on-simulator-but-crashes/45907622?noredirect=1 の内容ではXcodeから外して実行したらうまくいき、その後Exceptions breakを全て外したらうまくいったようなことが書いてありましたが、いかがでしょうか?
naokun

2018/03/11 02:45

ダメでした、試しにBreakpointをdisableにしましたが変わりなく、Xcodeから外しても効果なしです
newmt

2018/03/11 04:09

ダウンロードしてやってみましたが、私の環境ではprint("4")は出力されました。 端末からアプリを一度アンインストールしたり、XcodeのDerivedDataの削除などやってみたらどうでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問