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. Благодарю.