Вы можете использовать точечную нотацию для доступа к свойствам (как в примере), но у переменных экземпляра есть только один путь доступа, поэтому единственное решение, если вы хотите получить доступ как к переменной экземпляра, так и к локальной переменной, - это дать им разные имена.
Формально это связано с ограничениями на альфа-преобразование в лямбда-исчислении, а именно с тем, что связанная переменная должна оставаться связанной, а свободная переменная оставаться свободной.
Если вам не нравится префикс «an» для местных жителей, вы можете использовать соглашение префикса «_» для переменных экземпляра, поскольку они также являются эффективно защищенными переменными.
@interface AClass {
id _object;
}
@property (retain) id object;
@end
@implementation AClass
@synthesize object = _object;
- (void)doSomething:(id)object
{
[_object befriend:object];
}
...
Конечно, «_» читается как «мой», поэтому он может быть таким же неприятным, как «a» / «an» перед параметрами. Переименование является лучшим решением, так как экземпляры и локальные переменные имеют разные роли, и их имена должны отражать это.