/ / Защо е лоша практика да използвате точка нотация за "странични ефекти" - цел-c, какао-докосване

Защо е лоша практика да използвате точка нотация за "странични ефекти" - цел-c, какао-докосване

Аз съм в глава 13 на iOS програмиране от Big Nerd Ranch и за живота на мен не виждам защо бих искал да използвам [self becomeFirstResponder]; отколкото self.becomeFirstResponder;

Когато напиша последния начин, self.becomeFirstResponder;, Получих предупреждение "Неутрализираният резултат от достъпа до имота - не трябва да се използват геймърите за странични ефекти". Все още работи по предназначение, но защо на Земята ще използвам скоби, когато установявам, че нотацията е по-лесна.

Моят въпрос: Какви са тези странични ефекти, които биха могли да се случат чрез използване на точка нотация по този начин?

Отговори:

1 за отговор № 1

becomeFirstResponder не е собственост, това е метод UIResponser.

Вие обаче го третирате като собственост, като използвате нотация на точки и игнорирайки връщащата стойност, поради което получавате предупреждението.


4 за отговор № 2

Вие питате неправилния въпрос: страничният ефект е това, което искате - това е така self става първият отговорен. Това е този страничен ефект определено ще възникне.

Точката, която компилаторът прави, е тази точканотацията не трябва да се използва целенасочено, за да предизвика тези нежелани реакции, вероятно отчасти, че компилаторът ще замени обаждането до getter или setter (или и двете) ще зависи от контекста на вашето използване на точка нотация, частично че компилаторът може да поиска да направи предположения за получаване на връщащ резултат, ако му се каже да се обади на получателя и отчасти, че вашият код просто ще изглежда погрешно и затова неправилно ще се чете на човек.


0 за отговор № 3

Не съм сигурен. Може да бъде компилатор може да пропусне вашите "s self.becomeFirstResponder; с високо ниво на оптимизация, защото не използвате резултата от собствеността.