ドット表記を使用してプロパティにアクセスできますが(例のように)、インスタンス変数にはアクセスパスが1つしかないため、インスタンス変数とローカル変数の両方にアクセスする場合の唯一の解決策は、それらに異なる名前を付けることです。
正式に言えば、これはラムダ計算でのアルファ変換の制限に関連しています。具体的には、束縛変数は束縛されたままであり、自由変数は自由のままである必要があります。
ローカルの「an」プレフィックスが気に入らない場合は、インスタンス変数に「_」プレフィックス規則を使用できます。これは、インスタンス変数も効果的に保護された変数であるためです。
@interface AClass {
id _object;
}
@property (retain) id object;
@end
@implementation AClass
@synthesize object = _object;
- (void)doSomething:(id)object
{
[_object befriend:object];
}
...
もちろん、「_」は「my」と読み替えられるので、パラメータの前の「a」/「an」と同じくらい不快かもしれません。インスタンス変数とローカル変数には異なる役割があり、それらの名前はこれを反映している必要があるため、名前の変更が最善の解決策です。