[iOS SDK] 実装ファイルでメンバ変数を宣言する

公開日: : 最終更新日:2015/01/24 iPad, iPhone

Xcode 4.x を導入したらいろいろ見慣れない記法があったので、いまさらながら一部まとめてみた。
参考文献はこちら。

詳解 Objective-C 2.0 第3版
詳解 Objective-C 2.0 第3版 荻原 剛志ソフトバンククリエイティブ 2011-12-28
売り上げランキング : 9867

Amazonで詳しく見る

by G-Tools

この本の発売は2011年12月なので、ぎりぎりXcode 4.2 までの変更が含まれているのだろう。
ということでXcode 4.4 のリリースから @synthesize が省略可能になった件などは含まれていない。

変更点はソフトアンテナブログさんへのリンク。

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 が自動で作成するのはクラスエクステンションなので、こちらを使うのが推奨になるのだろうか。

参考リンク

関連記事

no image

おすすめ iPhone5用ケース iJacket

iPhone5購入時に同時に購入したケース(写真上)が1ヶ月程度でかなりみすぼらしい状態

記事を読む

TestFlight を使ったベータテストについて

アプリのベータテストにご協力いただきありがとうございます。ベータテストには、AppleのTestFl

記事を読む

no image

[iPhone SDK] Log Locations 1.2 を Submit

かなり久しぶりに、自動で毎日移動した場所を記録する Log Locations をアップデートした。

記事を読む

no image

WWDC にひとりで参加する人向け情報

WWDC 2011 に行ってきたの続編。 自費で1人で参加したのだけれども、当時あまりそういう人向

記事を読む

no image

iPadアプリ第2弾 タッチ!にほんちずHD 公開

自分の娘用アプリ第2弾が今朝2011/06/17公開されました。 今回は日本地図を学習するアプ

記事を読む

no image

iPhone SDK勉強会

iPhone 開発の勉強会をしよう、ということになったので、それ向けにメモを書いてみる。相手はいろい

記事を読む

no image

Xcode4 の初Submit作業ではまる 2011/07/11

昨夜、タッチ! にほんちずHDの次のアプリを検証していて、iPadを回転させるとアプリが異常終了して

記事を読む

no image

Admob に関して少し調べてみた

iPhoneアプリとAndroidアプリでAdmobを使って広告を表示してみているが、いまだに管理画

記事を読む

[iOS SDK] No identities are available for signing 問題にはまる

久しぶりに Provisioning Profileではまった。 この問題にはまると、解決までにか

記事を読む

no image

iPhone開発のネタ帳: sonsongithub の PopupView を使ってみた

自作アプリで sonson 氏の PopupView を使わせていただいてます。 Softwar

記事を読む

Message

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

自宅をリフォームしてみた

数年前から奥さんに家のリフォームを希望されていた。 ガ

iOS 16 GM版アップデート

遅ればせながら iPhone 11 Pro Maxを iOS16 G

Apple Event Sep 2022 Far Out

毎年恒例の Apple Event が 2022/09/07 に行わ

MY HER-SYS の使い方

子どもが新型コロナウイルスに感染し、隔離を試みましたが結局自分も感染

Transcend TS-HUB5C を買ってみた

前回 USB Type-C ハブを買って返品してしまったので、再度検

→もっと見る

  • 2013年1月
     123456
    78910111213
    14151617181920
    21222324252627
    28293031  
PAGE TOP ↑