2016-11-03 72 views
17

Osobiście wolę wywołanie zwrotne od delegata w Swift w celu uzyskania prostych korelacji logicznych, ponieważ jest to dość proste i łatwe do zrozumienia. Jednocześnie niektórzy wolą delegata, ponieważ delegacja jest popularnym wzorem w innych językach, takich jak C#.iOS Swift: Zamknięcia (wywołania zwrotne) a Delegaci, kiedy używać?

Istnieją pewne dyskusje znalazłem w Internecie: „Dlaczego nie należy używać delegatów w Swift”

1. https://medium.cobeisfresh.com/why-you-shouldn-t-use-delegates-in-swift-7ef808a7f16b#.hqb7zrc1v

2. Apple reorientacji bardziej na wzór zwrotnej https://www.reddit.com/r/swift/comments/2ces1q/closures_vs_delegates/

3. blokuje lub delegatów? http://blog.stablekernel.com/blocks-or-delegates/

Po przeczytaniu tych dyskusji, nadal nie jestem zdecydowany co do preferencji. Chciałbym wiedzieć, kiedy lepiej jest używać zamknięć i kiedy lepiej korzystać z delegatów? i powody?

Dzięki!

+0

Ponieważ twoje pytanie nie ma dobrej obiektywnej odpowiedzi i wkrótce zostanie zamknięte, po prostu użyj tego, które najlepiej rozwiązuje dany problem. – rmaddy

+0

@rmaddy Dziękujemy za opinię. Zaktualizuję pytanie, by było bardziej szczegółowe. Jest tak samo jak pytania: http://stackoverflow.com/questions/27703913/which-c-sharp-pattern-has-better-to-avoid-duplicated-event-handlers – RainCast

Odpowiedz

16

(odpowiedź Opinia oparta na pytanie w oparciu zdaniem)

pytania nie powinny być, co jest lepsze, powinno być to, co jest najlepszym rozwiązaniem problemu próbuję rozwiązać.

Moja prosta zasada: jeśli coś wymaga jednej funkcji jako interfejsu, zwykle dobrym rozwiązaniem jest wywołanie zwrotne. Jeśli wymagana jest więcej niż jedna funkcja, szczególnie gdy są wymagane do podstawowej funkcji obiektu, Delegat jest prawdopodobnie lepszym rozwiązaniem.

Jak zwykle zależy to od konkretnej sytuacji, ale absolutne stwierdzenia rzadko sprawdzają się w praktyce.

+0

Myślę, że to jest dobry punkt. dzięki! – RainCast