Единственная полезная цель, которую я видел, состоит в том, чтобы различать локальные переменные и переменные-члены, как указано выше, но это не является необходимым соглашением. В сочетании с @property это увеличивает многословность синтезирующих операторов - @synthesize missionName = _missionName;
и везде безобразно.
Вместо использования подчеркивания, просто используйте описательные имена переменных внутри методов, которые не конфликтуют. Когда они должны конфликтовать, имя переменной в методе должно иметь подчеркивание, а не переменную-член, которая может использоваться несколькими методами . Единственное общее место, где это полезно, это метод set или метод init. Кроме того, это сделает оператор @synthesize более кратким.
-(void)setMyString:(NSString*)_myString
{
myString = _myString;
}
Edit:
Благодаря новейшей функции автоматического синтеза, теперь я использую подчеркивание для ивара (в редких случаях, когда мне нужно использовать ивар, чтобы соответствовать функциям автоматического синтеза.