を使用する@synthesize iVar = _iVar;
必要がありますが、すぐに合成する必要がなくなるでしょう ;)
Xcode によって提供されるオプションは、コード補完に少しバグがあるだけだと思います。
厳密に言えば、使用する名前はまったく問題ではなく (衝突がない限り)、@synthesize iVar = i_va_R;
完全に合法です。
@synthesize foo = bar;
@synthesize bar = foo;
// DO NOT DO THIS IN REAL LIFE!!
あなたが言っているのは、指定された名前のインスタンス変数によってプロパティがサポートされるようにすることだけです。インスタンス変数に直接アクセスしない場合 ( orself.iVar
ではなく常に使用する場合)、使用するものはまったく問題ではありません。iVar に直接アクセスする場合は、コードの残りの部分だけが問題になります。iVar
_iVar
もう少し明確にするために、プロパティを使用せずに上記を実装する方法の例を次に示します。
@interface MyBadClass {
int foo;
int bar;
}
- (int)foo;
- (void)setFoo:(int)foo;
- (int)bar;
- (void)setBar:(int)bar;
@end
@implementation MyBadClass
- (it)foo
{
return bar;
}
- (void)setFoo:(int)foo
{
bar = foo;
}
- (int)bar
{
return foo;
}
- (void)setBar:(int)bar
{
foo = bar;
}
@end
(PS:int
メモリ管理を避けるために s を使用していますが、オブジェクトにも同じことが当てはまります)