回答編集履歴
1
@property で自動生成されるインスタンス変数、ゲッター、セッターの名前を自由に指定できる方法を追記しました。
answer
CHANGED
@@ -34,7 +34,7 @@
|
|
34
34
|
}
|
35
35
|
```
|
36
36
|
|
37
|
-
つまり `@property` でプロパティーを宣言すると、それに必要なインスタンス変数、ゲッター、セッターが自動的に実装されます。純粋に `@property` は **プロパティーを簡単に実装するための便利機能** です。
|
37
|
+
つまり `@property` でプロパティーを宣言すると、それに必要なインスタンス変数、ゲッター、セッターが自動的に実装されます。純粋に `@property` は **プロパティーを簡単に実装するための便利機能** です。それを使わずに、上のような実装を自分で書いてもプロパティーを実装することができます。
|
38
38
|
|
39
39
|
## 名前のつけられ方
|
40
40
|
|
@@ -82,6 +82,24 @@
|
|
82
82
|
@end
|
83
83
|
```
|
84
84
|
|
85
|
+
## 任意の名前にも変更可能
|
86
|
+
|
87
|
+
このように `@property` を使うと、プロパティーを構成する上で必要な、インスタンス変数とセッターとゲッターが、自動的に実装されますけど、その名前を自分で指定することもできます。
|
88
|
+
|
89
|
+
セッターやゲッターの名前は `@property` の属性で指定できます。たとえば、セッターを `[obj f]` で、ゲッターを `[obj g: value]` で扱いたい場合は、プロパティーを次のように宣言します。
|
90
|
+
|
91
|
+
```objective-c
|
92
|
+
@property (nonatomic, getter=f, setter=g:) NSString *firstName;
|
93
|
+
```
|
94
|
+
|
95
|
+
また、インスタンス変数の名前を変更したいときは `@implementation` 〜 `@end` 内で `@synthesize` キーワードを使って、どのプロパティー名の値をどのインスタンス変数に保存したいかを指定します。そうすると、その名前のインスタンス変数が定義されて、ゲッターとセッターはそれを扱うようにコードを生成してくれます。
|
96
|
+
|
97
|
+
たとえば、プロパティー `firstName` で使うインスタンス変数名を `_k` で用意したいときは、次のように記載します。
|
98
|
+
|
99
|
+
```objective-c
|
100
|
+
@synthesize firstName = _k;
|
101
|
+
```
|
102
|
+
|
85
103
|
# 2. クラス変数とインスタンス変数
|
86
104
|
|
87
105
|
## インスタンス変数
|