2015年8月7日金曜日

[XCode] アプリ作成時によく見るエラーとその解決法 まとめ


はじめに

XCode(Objective-C)でよく見るエラーや警告を集めました。

前々からこういう整理した記事が個人的に欲しかったので作ってみました。

解決方法はざっくりと書きます。
詳細な解決方法はリンク先の記事(当ブログ記事や別サイト記事)に委ねます。

この記事は随時、追加や更新をして、今後どんどん育てていく予定です。
参照するたびに変更になっている可能性があります。ご了承ください。
今後、当ブログでエラーの記事を書いた場合は、別途記事を書いた上で、ここにリンクする予定です。

では、始めてまいりましょう。



(指摘や、こんなエラーで困ってます。こんなエラー記事書きましたなどあれば、コメントいただければ嬉しいです。追記します。)



Xcode cannot run using the selected device.


【直訳】Xcodeは選択したデバイスを使用して実行することはできません。
【解決法】
・単純にデバイスがMacと繋がってない。
・プロビジョニングファイルなどの関係で、XCodeがデバイスを認識していない。
・XCodeがデバイスのバージョンを認識できない。
など

iOS開発でハマった点2点


The identity used to sign the executable is no longer valid.

【直訳】実行可能ファイルの署名が有効ではありません。
【解決法】
・キーチェーンアクセスの証明書の期限が可能性がある

【参考リンク】
Cartificatesの有効期限切れでエラー(実機で実行できない)
Certificatesの期限が切れたので更新する in Xcode6


The service is invalid

【直訳】サービスが無効です。
【解決法】
・Xcodeとデバイスで把握している状況がずれている。

【参考リンク】
Xcode;The service is invalid
Xcode The service is invalid -iPhoneアプリ実機テストエラー

Apple Mach-O Linker Error

【直訳】リンクエラー
【解決法】
・必要なフレームワークが足りない。
・参照ファイルがない。
・クラス名が不正。(名称重複。@interface、@implementionの名称など。)
・ビルドセッティングがおかしい。(Library Search Pathsなど)
など理由は多種多様。


EXC_BAD_ACCESE

【直訳】アクセス失敗
【解決法】
具体的な解決法は書くのが難しいが・・・
・解放済みのオブジェクトに対してアクセスしていることが原因。
【直訳】期待する信号がこない。(Signal Abort)
【解決法】
これも理由はさまざまで、具体的な解決法は書くのが難しいが・・・
・ストーリーボードやIB関連付けを間違ってコード間でのデータのやり取りがうまくできていないなどが多い。
・名称を少し変更したりして、整合性がずれて発生する場合が多い。
・コンパイルは成功するが、実行時にエラーとなるのでたちが悪い。

【参照リンク】
[iPhone] SIGABRT エラー で悩む
Thread 1:signal SIGABRT って何?の記事リスト


Use of undeclared identifier '**'

【直訳】宣言していない**を利用しています。
【解決法】
・変数の宣言ができていない。(スコープもよく確認する)
・アクセサがらみの宣言にも注意。

【参考リンク】

Local Declaration of ** Hides Instance Variable


【直訳】直訳すると、ローカル変数の**は、インスタンス変数を隠しています。
【解決法】
・ローカル変数と、インスタンス変数は、かぶらない様に、違う名前する。

【参考リンク】
‘Local Declaration of "●●" Hides Instance Variable’コンパイラ警告の回避方法


Expression is not assignable

【直訳】式は格納できません。
【解決法】
・ほとんどの場合の原因は、「構造体とクラスを混在した式を書いている」事にある。

【参考リンク】
Xcode;Expression is no assignable


Deprecated ** Warning

【直訳】**は推奨されていません。
【解決法】
・仕様変更で利用している対象のメソッドなどは将来的になくなる可能性があるので、早めに変更を推奨。

【参考リンク】
Xcodeで「deprecated」と言われたら


Duplicate declearation of method **

【直訳】**メソッドの宣言が重複しています。
【解決法】
・メソッド名の重複を解決しましょう。

【参考リンク】
「Duplicate declaration of method メソッド名」エラー

no visible @interface for declares the selector

【直訳】@interfaceにselectorの宣言がありません。
【解決法】
・メソッドの綴りに間違いがないか、確認する。
・引数に間違いがないか、@interfaceにselectorの宣言があるかを確認する。

【参考リンク】
ビルド時に " no visible @interface for declares the selector alloc " と表示された場合の対処法
no visible @interface for declares the selector


Incomplete implementation

【直訳】実装が不完全です。(警告のため実行は可能)
【解決法】
・実装されていないメソッドなどがある。
・hファイルで宣言はしているが、mファイルで使用していない。
・宣言名が間違っている。(大文字、小文字なども確認する)

【参照リンク】
Xcodeのワーニング「Incomplete Implementation」を解決するには
XcodeエラーIncomplete implementation


unused variable '**'

【直訳】変数の定義のみで、** が使われていない。(警告のため実行は可能)
【解決法】
・変数の利用状況を確認する。(未使用なら変数定義を削除する)

【参照リンク】
トラブルシューティング - iPhoneアプリ開発の虎の巻
Xcode 5.1の Unused Functionや Unused Variableの警告を解消する方法(根本解決にはならないけれど)






【以下はcocos2d-x [C++] でよく見るエラー】

cocos2d-xでは、言語はC++になりますが、参照リンク先はC言語のエラーである場合があります。


Redefinition of '**'.

【直訳】**が再定義されてます。
【解決法】
・同じ定義のクラスがある。
・複数の参照をしていて、同じ名前の定義があり解決できない。

【参考リンク】
[iOS]error:Redefinition of ''
h14j66::エラーメッセージ一覧&解決例


'string' file not found

【直訳】stringファイルが見つかりません。
【解決法】
・Objective-Cと共存させることでよく発生するエラー。
・Objective-Cのコードを消したり、拡張子を.m から .mm に変更することで解決する場合がある。
・クラス名が重複していて禁則状態になっている場合などもある。

0 件のコメント:

コメントを投稿