“Действительно ли сам” необходимо?

Использует "сам" когда-нибудь необходимый в Objective C или возможно просто хорошей практике? Я пошел от использования всего этого время к не использованию его вообще, и я, кажется, действительно не замечаю различия. Разве это не просто подразумевается так или иначе?

6
задан Rob 7 May 2010 в 13:32
поделиться

5 ответов

self необходим, если вы хотите, чтобы объект посылал сообщения, ну, самому себеself. Также иногда полезно обращаться к свойствам через геттеры/сеттеры, в этом случае вам также понадобится использовать self, как в self.propertyname или self.propertyname = value. (Они не эквивалентны propertyname или propertyname = value.

5
ответ дан 10 December 2019 в 00:35
поделиться

Для работы с переменными это зависит. Если вы хотите использовать синтезированный геттер или сеттер, используйте точечную нотацию с self.

self.someProperty = @"blah"; //Uses the setter
someProperty = @"blah"; //Directly sets the variable
1
ответ дан 10 December 2019 в 00:35
поделиться

На самом деле это не обязательно каждый раз, но это хорошая практика, потому что это облегчает другим людям чтение вашего кода.

И это необходимо, когда у вас есть объекты с одинаковыми именами в разных классах, тогда ключевая работа «self» сообщит вашей программе, что вы ссылаетесь на объект в том же классе.

Это обычно случается в более крупных проектах.

1
ответ дан 10 December 2019 в 00:35
поделиться

Да, поскольку в Objective C нет вызовов методов, как в C/C++, а используется отправка сообщений, self for в контекстах типа

[self doSomething]; и self.myProperty;

необходимы.

Если вы обращаетесь к ivar, self не нужен.

Надеюсь, это поможет.

-CV

0
ответ дан 10 December 2019 в 00:35
поделиться

Это не нужно при обращении к переменным экземпляра. Он необходим, когда вы хотите передать ссылку на текущий объект другому методу, например, при установке делегата:

[someObj setDelegate:self];

Он также необходим при вызове метода того же класса на текущем объекте:

[self doMethod]
3
ответ дан 10 December 2019 в 00:35
поделиться