iOS: использование self и underscore (_) с переменной [duplicate]

Possible Duplicate:
How does an underscore in front of a variable in a cocoa objective-c class work?

Я был очень смущен использованием self или подчеркивания с именем переменной после ее синтеза, как показано ниже:

In .h file:
@property(nonatomic, strong) NSMutableArray *users;

In .m file:
@synthesize users = _users;

Исходя из моего понимания, когда я использую self.users, ОС обязательно освободит ранее выделенную память в методе set, поэтому нам не нужно явно заботиться об этом.

_users является переменной экземпляра для пользователей и обычно должна использоваться при доступе к переменной users. Если я использую _users для изменения его значения, то он не будет запускать делегат KVO, который не будет уведомлять класс, наблюдающий за изменением значения пользователя.

Кроме того, self.users позволяет дифференцировать фиктивную переменную в имени метода, как показано ниже,

- (void)assignUsers:(NSMutableArray*)users {
      self.users = users;
}

Может кто-нибудь сказать мне, если есть что-то, что я понял неправильно или отсутствует при использовании _users или self.users. Благодарю.

Ответы на вопрос(3)

Ваш ответ на вопрос