[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 が自動で作成するのはクラスエクステンションなので、こちらを使うのが推奨になるのだろうか。
参考リンク
関連記事
-
-
アップルのタブレット端末に関するEngadgetのおもろい記事
Engadgetはごくたまに笑いのつぼにヒットするが今回のは面白かった。 ジョブズはタブレット端末に
-
-
[iOS] アプリ名にiPadと入れてRejectされた話
新作 iPad アプリを App Store に Submit したところ、Reject されたので
-
-
iPhoneアプリネットワーク+GPSプログラミング 橋本佳幸
去年12月に読んで、途中まで感想を書いてそのままにしていた。ネットワーク関連の実用的なコードが多くて
-
-
AirMac Extreme Base Station がほしい 2011/05/07
自宅の無線LANルータが不安定なので、AirMac Extremeを買おうかと悩み中。 自宅にApp
-
-
[iOS SDK] iPhone/iPad はサイレントモードにしても音が鳴る
この前、iOS5 を入れた iPad2 で おんぷちゃん for iPad から音が鳴らない、ほかの
-
-
Apple Special Event 2019
https://japanese.engadget.com/2019/09/10/5-iphone
-
-
おんぷちゃん for iPad 1.3.3 Submit
今回は紅白歌合戦を見ながらSubmit。 相変わらずうちの娘が譜読みに苦労していて新しい曲を弾く
-
-
[iPhone SDK] UINavigationBar にボタンを追加する
自作アプリでUIWebViewを使ってWebを表示しているが、戻る・進むボタンをUINaviga
-
-
2歳の娘がiPadを離しません タッチ! うごく うたえほん
開発用に買ったのでアプリ開発時以外はあまり使っていなかったiPadはここしばらく完全に2歳の娘用にな
-
-
Apple iPad まとめ
(2010/01/28 朝5時あたりのapple.comのトップページ) 2010/01/27(水