質問: @"キジネコ"; } @end ```
回答: ### 大事なこと Objective-Cにはクラス変数が**ありません** クラス変数がありませんので、クラス変数の代わりに静的変数を利用します。 一般的にはクラス定義ファイル(.m)の頭のほう、@implementationより前に ``` static NSString *test2 =@"野良ネコ"; ``` などのように宣言/定義します。 staticをつけるのはほかのクラスなどから直接アクセスされるのを防ぐためです。 質問者さんの書かれた ``` NSString *test2 =@"野良ネコ"; ``` は大域変数(グローバル変数)ではありますが、一応これもクラス変数の代わりとして利用可能です。 ただし、慣習的に @implementation と @end の間には書かないです。(書いても間違いではない) また、 > > インスタンス変数(グローバル変数) > > > とコメントが書かれていますが、インスタンス変数で且つグローバル変数である存在はあり得ません。 その位置に書かれているものはインスタンス変数です。 インスタンス変数はインスタンスがそれぞれ個別に所有するものであり、全域的に利用可能なものではありません。 問題のエラー部分ですが、メソッド/関数定義部の内側以外では通常の`式`を書くことができません。 これはC言語から踏襲しています。 何を意図して、そこに`test1 = @"親ネコ";`を書かれたのかわかりませんので、どこに書くべきかは私にはわかりません。 ### クラスプロパティ 最新のObjective-Cではクラスプロパティというものが導入されていますが、これは上で述べた静的(あるいは大域)変数とそのアクセサをプログラマが責任をもって提供する必要があり、質問者さんのご希望のものではありません。