回答編集履歴
1
@property で自動生成されるインスタンス変数、ゲッター、セッターの名前を自由に指定できる方法を追記しました。
test
CHANGED
@@ -70,7 +70,7 @@
|
|
70
70
|
|
71
71
|
|
72
72
|
|
73
|
-
つまり `@property` でプロパティーを宣言すると、それに必要なインスタンス変数、ゲッター、セッターが自動的に実装されます。純粋に `@property` は **プロパティーを簡単に実装するための便利機能** です。
|
73
|
+
つまり `@property` でプロパティーを宣言すると、それに必要なインスタンス変数、ゲッター、セッターが自動的に実装されます。純粋に `@property` は **プロパティーを簡単に実装するための便利機能** です。それを使わずに、上のような実装を自分で書いてもプロパティーを実装することができます。
|
74
74
|
|
75
75
|
|
76
76
|
|
@@ -166,6 +166,42 @@
|
|
166
166
|
|
167
167
|
|
168
168
|
|
169
|
+
## 任意の名前にも変更可能
|
170
|
+
|
171
|
+
|
172
|
+
|
173
|
+
このように `@property` を使うと、プロパティーを構成する上で必要な、インスタンス変数とセッターとゲッターが、自動的に実装されますけど、その名前を自分で指定することもできます。
|
174
|
+
|
175
|
+
|
176
|
+
|
177
|
+
セッターやゲッターの名前は `@property` の属性で指定できます。たとえば、セッターを `[obj f]` で、ゲッターを `[obj g: value]` で扱いたい場合は、プロパティーを次のように宣言します。
|
178
|
+
|
179
|
+
|
180
|
+
|
181
|
+
```objective-c
|
182
|
+
|
183
|
+
@property (nonatomic, getter=f, setter=g:) NSString *firstName;
|
184
|
+
|
185
|
+
```
|
186
|
+
|
187
|
+
|
188
|
+
|
189
|
+
また、インスタンス変数の名前を変更したいときは `@implementation` 〜 `@end` 内で `@synthesize` キーワードを使って、どのプロパティー名の値をどのインスタンス変数に保存したいかを指定します。そうすると、その名前のインスタンス変数が定義されて、ゲッターとセッターはそれを扱うようにコードを生成してくれます。
|
190
|
+
|
191
|
+
|
192
|
+
|
193
|
+
たとえば、プロパティー `firstName` で使うインスタンス変数名を `_k` で用意したいときは、次のように記載します。
|
194
|
+
|
195
|
+
|
196
|
+
|
197
|
+
```objective-c
|
198
|
+
|
199
|
+
@synthesize firstName = _k;
|
200
|
+
|
201
|
+
```
|
202
|
+
|
203
|
+
|
204
|
+
|
169
205
|
# 2. クラス変数とインスタンス変数
|
170
206
|
|
171
207
|
|