Возможный дубликат:
Как работает подчеркивание перед переменной в классе target-c cocoa?
Я был очень смущен использованием self или подчеркивания с именем переменной после ее синтеза, как показано ниже:
In .h file:
@property(nonatomic, strong) NSMutableArray *users;
In .m file:
@synthesize users = _users;
Исходя из моего понимания, когда я использую self.users
, ОС обязательно освободит ранее выделенную память в методе set, поэтому нам не нужно заботиться об этом явно.
_users
является переменной экземпляра для пользователей и должна обычно использоваться при доступе к переменной users. Если я использую _users
для изменения его значения, то он не будет _users
который не будет уведомлять класс, наблюдающий за изменением значения пользователя.
Кроме того, self.users
позволяет дифференцировать фиктивную переменную в имени метода, как self.users
ниже,
- (void)assignUsers:(NSMutableArray*)users {
self.users = users;
}
Может кто-нибудь сказать мне, если я что-то неправильно понял или пропустил при использовании _users
или self.users
?