[iOS SDK] 実装ファイルでメンバ変数を宣言する
Xcode 4.x を導入したらいろいろ見慣れない記法があったので、いまさらながら一部まとめてみた。
参考文献はこちら。
| 詳解 Objective-C 2.0 第3版 | |
![]() |
荻原 剛志ソフトバンククリエイティブ 2011-12-28 売り上げランキング : 9867 by G-Tools |
この本の発売は2011年12月なので、ぎりぎりXcode 4.2 までの変更が含まれているのだろう。
ということでXcode 4.4 のリリースから @synthesize が省略可能になった件などは含まれていない。
- Xcode 4.0 2011年3月リリース
- Xcode 4.1 2011年7月リリース
- Xcode 4.2 2011年11月リリース
- Xcode 4.3 2012年2月リリース
- Xcode 4.4 2012年7月リリース
- Xcode 4.5 2012年9月リリース
変更点はソフトアンテナブログさんへのリンク。
Xcode 3.x 時代の書き方はこちら
@interface Foo {
NSString *name;
@private // @private でアクセス権?を制限できた。何も書かないと@protectedになる
int innerVariable; // 内部変数
}
@property (nonatomic, copy) NSString *name;
@end
// 実装部分
@implementation
@synthesize name; // @synthesize か、@dynamic が必要だった
@end
Xcode 4.5 時代の書き方はこちら
@interface Foo
@property (nonatomic, copy) NSString *name; // この1行だけでよくなり、@synthesize は不要
@end
// 実装部分
@interface Foo() { // クラスエクステンションによるインスタンス変数宣言
int innerVariable; // 内部変数
}
@end
@implementation Foo { // 実装部でのインスタンス変数
int innerVariable; // 内部変数
}
@end
クラスエクステンションによるインスタンス変数の宣言
通常、クラス名の横に括弧を書くとカテゴリ名となるけれども、カテゴリ名を書かないとクラスエクステンションとなるらしい。
これにより、内部メソッドや内部変数を宣言することができる。
Xcode 4.5 で New File すると、このクラスエクステンションが勝手に .m の一番上に用意されるようになっていて、最初何かわからなかったので調べ始めたのがこの記事を書いたきっかけだった。
参考リンク
Objective-Cのカテゴリ | YOHEI’s BLOG
実装部でのインスタンス変数
萩原本3版 P80 実装部でのインスタンス変数定義より。
Xcode 4.2以降のclangコンパイラから、クラス定義においてインスタンス変数の定義を実装部に記述できるようになった。
この方法でも内部変数を定義することができる。
クラスエクステンションと、実装部での変数定義とどう使い分けるのが良いのかは不明。
Xcode が自動で作成するのはクラスエクステンションなので、こちらを使うのが推奨になるのだろうか。
参考リンク
関連記事
-
-
[iOS][SDK]UIImageをファイルとして保存したい
オンデバイスで学習を行ったときに、将来使えるように UIImage も画像ファイルとして保存してお
-
-
[iOS開発本] 詳解 iOS5 プログラミング の感想
書店で見かけて久しぶりに即買いしたiOS開発本。 今日ようやくざっと読めて、予想以上におもしろかった
-
-
林信行氏 iPhoneの衝撃 セミナー 2009/10/07@代々木 に参加してきた
いまさらながら、2009/10/07(水)に行われた、林信行氏 iPhoneの衝撃 セミナーのレポ
-
-
iPhone SDK勉強会
iPhone 開発の勉強会をしよう、ということになったので、それ向けにメモを書いてみる。相手はいろい
-
-
[iPhone SDK] sqlite 学習中。FMDB を知る。
SQLite入門 第2版西沢 直木 翔泳社 2009-05-19売り上げランキング : 17582
-
-
薄い iPad2用ケース eggshell for iPad2 TUN-PD-000079 購入 2011/06/27
不具合報告があったので、当初予定がなかったiPad2を購入。 それはまた別に書くとして、まずは一緒に
-
-
Apple Special Event 2010
2010年は、1月に初代 iPad が発表され、6月にWWDCでiPhone4が発表されるという、
-
-
unite スマートベース SmartBase for iPhone
しばらく前に買って愛用していて、今回もう1台買ったので紹介。iPhone 3G/3GS用と、
-
-
自作iPhoneアプリ いろいろレビュー依頼
アプリ制作日誌 #app_24: iPhoneアプリのレビューを、寄稿・依頼できるサイトまとめ。 と
-
-
Appleシリコン搭載Mac発表?
いつからか、下記の文言が App Store Connect で表示されるようになった。
