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

参考リンク

関連記事

[iPhone6 Plus] はじめて保護ガラスを貼ってみた JTT Online Glass Protector

会社の知り合いが色をまちがって購入したということで、iPhone6 Plus 用保護ガラスを

記事を読む

no image

Beginning iPhone 3 Developmentの続編が出るらしい

iPhone開発の入門書としていま一番良いと個人的に思っている、Apressの Beginning

記事を読む

おんぷちゃん for iPad 2.0.0リリース

あけましておめでとうございます。今年もよろしくお願いします。 2022年8月にはだいたい完成

記事を読む

[iOS SDK] 文字列をローカライズする際に使える awk スクリプト

iOSで文字列をローカライズする際に Localizable.strings ファイルに "ロ

記事を読む

no image

Kickstarter で iPhone/Android で使える腕時計 Pebble に出資してみた

Kickstarter で28時間で100万ドルを調達したという Pebble E-Pape

記事を読む

Apple に Bug Report を送信、iOS 11.3で修正された

EverLearnのユーザの方から、toothache の発音がおかしいので直してほしいという依頼が

記事を読む

AWS IoTを利用してクラウド連携機能を追加してみた

GWに自宅待機でまとまった時間が確保できたので、AWS IoT を利用してMQTTを使った

記事を読む

no image

[iPhone5] ステータスバーの謎の○(丸)表示

iPhone5使い始めて2日目、自宅でもLTE表示が出ていたのになぜかある時から○表示になってしまっ

記事を読む

no image

unite スマートベース SmartBase for iPhone

しばらく前に買って愛用していて、今回もう1台買ったので紹介。iPhone 3G/3GS用と、

記事を読む

no image

[iOS] iOSでToast

iOSでAndroidのToast的な、数秒間メッセージを表示して自動的に消える部品を探していたのだ

記事を読む

Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

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

Wi-Fi6Eルータ TP-Link AXE5400購入

Wi-Fi6E を試してみたくなり、TP-Link AXE5

児童手当 認定請求書申請 2024 「請求者が養育をする18歳に達する日以降の最初の3月31日までの子の数」とは?

2024年に受給していない人には手紙が届くらしい。 電子申請も

Vision Proアプリ開発本 8/24、8/26に発売

Vision Proアプリ開発入門 P400が 8/24 に発売、V

Developer Strap が日本でも購入可能に

USアカウントでしか購入できなかった Vision Pro 用 De

Vision Pro カバーケースを買ってみた

[itemlink post_id="11629"]

→もっと見る

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