Использует "сам" когда-нибудь необходимый в Objective C или возможно просто хорошей практике? Я пошел от использования всего этого время к не использованию его вообще, и я, кажется, действительно не замечаю различия. Разве это не просто подразумевается так или иначе?
self
необходим, если вы хотите, чтобы объект посылал сообщения, ну, самому себеself
. Также иногда полезно обращаться к свойствам через геттеры/сеттеры, в этом случае вам также понадобится использовать self
, как в self.propertyname
или self.propertyname = value
. (Они не эквивалентны propertyname
или propertyname = value
.
Для работы с переменными это зависит. Если вы хотите использовать синтезированный геттер или сеттер, используйте точечную нотацию с self.
self.someProperty = @"blah"; //Uses the setter
someProperty = @"blah"; //Directly sets the variable
На самом деле это не обязательно каждый раз, но это хорошая практика, потому что это облегчает другим людям чтение вашего кода.
И это необходимо, когда у вас есть объекты с одинаковыми именами в разных классах, тогда ключевая работа «self» сообщит вашей программе, что вы ссылаетесь на объект в том же классе.
Это обычно случается в более крупных проектах.
Да, поскольку в Objective C нет вызовов методов, как в C/C++, а используется отправка сообщений, self for в контекстах типа
[self doSomething]; и self.myProperty;
необходимы.
Если вы обращаетесь к ivar, self не нужен.
Надеюсь, это поможет.
-CV
Это не нужно при обращении к переменным экземпляра. Он необходим, когда вы хотите передать ссылку на текущий объект другому методу, например, при установке делегата:
[someObj setDelegate:self];
Он также необходим при вызове метода того же класса на текущем объекте:
[self doMethod]