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

参考リンク

関連記事

EverLearn 1.8.1 を公開しました

EverLearn 1.8.1 を本日公開しました (2016/10/27)単語検索ページで単語をハ

記事を読む

no image

基礎から学ぶ CoronaSDK

基礎から学ぶ CoronaSDK という本が2012/2/25にでるらしい。 昔 CoronaSDK

記事を読む

no image

Corona SDK 調査5日目

スクリプト言語による効率的ゲーム開発を読み進めている。 そろそろソースコードを読んでみようと思って本

記事を読む

大量のスクリーンショット取得作業を省力化する Sketch to AppStore vs LaunchKit

段々対応が必要な解像度が増えて、今は App Store にアプリSubmit時に4種類もスクリーン

記事を読む

no image

ついにヒレガス本第3版が出るらしい

以前から、いつかは出るかな、いやもういまさらでないかなと思っていたヒレガス本の第3版が11月についに

記事を読む

no image

Pro iPhone Game Development は発売延期らしい

面白そうだったので結構前にAmazonで注文したのだが、ずっと発売されず、おかしいとおもって発売元の

記事を読む

MacPeople 最終号

2014年11月号で休刊。 1995年10月に創刊されたらしい。 最終号はiPhone6/iP

記事を読む

no image

派生クラスを変更し忘れて半日はまる

こんなコードを書いて半日はまっていた。 SettingViewController は UITa

記事を読む

no image

最近読んだ本: これでiPhoneアプリが1000万本売れた 南雲 玲生著

周りでおもしろいと言っている人がいたので買ってみた。2011/05/21発売。 株式会社ユードーの南

記事を読む

[iPhone6plus] 買うかかなり悩み中

9/19 に発売されてからiPhone6Plusを買おうか、買うならいつ買おうか、キャリアは

記事を読む

Message

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

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

ポモドーロテクニック用物理タイマーならTime Timer

会社ではなかなか自由に時間を使えないが、家で読書や作業をする

DELL 32インチディスプレイ U3223QE 購入

Dell U3223QE は解像度 3840x216

WWDC 2023 Vision Pro発表

2023/6/5 (日本時間 2023/06/06 2AM)のWWD

M1 MacBook Air を Venturaにアップデートする

M1 MacBook Air を macOS Montere

iOS16でaurioTouch の inBufferFramesが1になる

https://developer.apple.com/librar

→もっと見る

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