2010年2月20日

コンパイルエラー覚え書き(Objective-C)


((赤のほう))

Variable length array declaration can not hava 'static' storage duration
メソッド内でstaticで配列を宣言するときに要素数が変数だと出る。

incompatible types in assignment
宣言に*を付け忘れ

variable-sized object may not be initialized
宣言に*を付け忘れ

expected ';' before '}' token
;忘れ

Expected expression before '〜' token
'〜'の前がおかしい

'〜' undeclared (first use in this function)
宣言忘れ、宣言の位置がおかしい

stay '3桁の数字' in program
日本語入力モードでなにか入力した

wrong type argument to unary minus
メソッドの引数がおかしいという意味
原因はほんとにメソッドの引数がおかしい場合と、すこし上のメソッドの}の閉じカッコ忘れでエラー部分が前のメソッドの一部と認識されている場合がある。

expected specifier-qualifier-list before '****'
2つの.hが互いに#importしあったときなどにおこる。
片方を
@class ****;
に変更するとエラーが出なくなることがよくある。
@class **** は.hのインポートではなく、ソースの中に「****」というクラスが出てきますが気にしないでください、と言うニュアンス。インポートはどこかでする必要があることがほとんどと思うが、.mの先頭でしてやればよい。
設計の見直しというのも解決方法のひとつ。

Lvalue required as left operand of assignment
代入可能じゃない(?)

Initializer element is not constant
int型の変数をstaticで宣言して同時に初期化しようとしたら出た。
宣言と初期化の文を分けたらエラーは出ない。
正直、エラーになる必要があるのかどうかわからない。

Strage size of '〜' isn't constant
メソッド内でBOOLの配列をstatic宣言し要素数に変数を指定すると出た。要素数を定数にしたらOKだった。これもエラーになる必要があるのかどうかわからない。

Accessing unknown '〜' component of a property
〜にアクセス出来ない。
〜が存在する場合は〜が書いてある.hのimportを忘れている可能性あり

Interface type cannot be statically allocated
宣言で*をつけるインスタンスに*がついてない

existing ivar for __weak property must be __weak
宣言でも__weakをつければエラーは消える
id __weak someInstance;

Lexical or Preprocessor Issue
プリコンパイルで何かある

Cast of Objective-C pointer type '〜' to C pointer type '〜' (aka 'const struct 〜)
ARC環境で、Objective-CのインスタンスとCの構造体のポインタをキャストしようとしたときに、retainCountの扱いをどうするかが指定されていない。キャストする型の前に__bridgeなど(3パターンある)を入れる。

CoreData: warning: Unable to load class named 'A〜' for entity 'B〜'. Class not found, using default NSManagedObject instead.
データベースxcdatamodeldのdefaultというところにエンティティーとクラス名を設定するところがある。後からクラス名をなどを変更した時はここを見落としがちなので注意。


((黄色のほう))

local declaration of '〜' hides instance variable
ローカル(狭い範囲)で宣言した変数がインスタンス変数と同じなのでインスタンス変数が使えなくなります

control reaches end of non-void function
何かをreturnしなければいけないメソッドでなにもreturnしていない

Format string is not a string literal (potentiallly insecure)
メソッドの引数などを、format指定で与えないといけないところで、やってない(stringインスタンスを直接与えたなど)

Apple Mach-O Linker Error
リンク(コンパイルした各ファイルを統合する)時のエラー
原因としては
framework(ライブラリ)の追加し忘れ。対応は、必要な物をTargetsの設定のsummaryで追加する
など


((実行時エラー))

Could not instantiate class named NSLayoutConstraint
StoryBoardでAutoLayoutをOFFにする


((analyzeによる警告))

The left(right) operand of '=' is a garbage value
=の左(右)の値が初期化されてない(可能性がある)

0 件のコメント:

コメントを投稿