/ / Dlaczego złą praktyką jest stosowanie notacji kropek w przypadku "efektów ubocznych"? - cel-c, dotyk kakao

Dlaczego stosowanie "notatek" w przypadku "efektów ubocznych" jest złą praktyką? - cel-c, dotyk kakao

Jestem w rozdziale 13 iOS Programowanie z Big Nerd Ranch i na moje życie Nie rozumiem, dlaczego chciałbym skorzystać [self becomeFirstResponder]; zamiast self.becomeFirstResponder;

Kiedy piszę to w ten sam sposób, self.becomeFirstResponder;, Otrzymuję ostrzeżenie "Wynik dostępu do nieruchomości nieużywany - gettery nie powinny być używane do efektów ubocznych" Nadal działa zgodnie z przeznaczeniem, ale dlaczego na ziemi użyłbym nawiasów, kiedy znajdę notację kropkową łatwiejszą.

Moje pytanie: Jakie są te skutki uboczne, które mogą się zdarzyć, korzystając z notacji kropek w ten sposób?

Odpowiedzi:

1 dla odpowiedzi № 1

becomeFirstResponder nie jest własnością, jest metodą UIResponser.

Jednak traktujesz to jako właściwość, używając notacji kropkowej i ignorując wartość zwracaną, dlatego otrzymujesz ostrzeżenie.


4 dla odpowiedzi nr 2

Zadajesz niewłaściwe pytanie: efekt uboczny jest tym, czego chcesz - to jest to self staje się pierwszym ratownikiem. To jest efekt uboczny zdecydowanie to zrobi pojawić się.

Punkt, który kompilator tworzy, to kropkaNotacja nie powinna być używana celowo, aby wywołać te efekty uboczne, prawdopodobnie częściowo, czy kompilator zastąpi wywołanie gettera, czy też ustawiający (lub oba) będą zależały od kontekstu użycia notacji kropkowej, częściowo kompilator może chcieć przyjąć założenia dotyczące uzyskania wyniku zwrotu, jeśli zostanie mu nakazane wywoływanie gettera, a częściowo, że kod będzie wyglądał niepoprawnie i dlatego będzie niepoprawnie odczytany dla człowieka.


0 dla odpowiedzi № 3

Nie jestem pewien. Może być kompilatorem może pominąć twoje self.becomeFirstResponder; z wysokim poziomem optymalizacji, ponieważ nie używasz wyniku właściwości.