mam SettingsManager
singleton, który obsługuje ustawienia użytkownika w mojej aplikacji (na przykład, gdy dźwięk jest odtwarzany w dowolnym kontrolerze widoku, SettingsManager
jest sprawdzane, aby sprawdzić, czy dźwięk jest włączony i przy jakiej głośności).
Czy ten obiekt klasy (do którego mam dostęp) [SettingsManager sharedManager]
) odpowiedzieć na wiadomość od delegata wysłaną gdzieś indziej? Na przykład, jeśli włączę dźwięk w moim SettingsViewController
, czy obiekt metody klasy może go wybrać i zapisać i zapisać te zmiany na dysku?
Odpowiedzi:
2 dla odpowiedzi № 1Twój singleton, po utworzeniu instancji, może oczywiście pełnić rolę delegata. W końcu jest to obiekt jak każdy inny obiekt. Jedyną różnicą jest to, że instancja jest tworzona tylko raz.
Jeśli jednak uzyskasz dostęp tylko przez klasęmetody i nie przechowuj żadnych danych we właściwościach, ivars, itp., wtedy może nie być w ogóle tworzony. Nie jestem pewien, czy w tym przypadku jest to prawdziwy singleton, ale widziałem, jak ludzie nazywają go singletonem, chociaż nigdy nie zostaje on faktycznie utworzony. W takim przypadku w ramach metod klasowych self
zawsze odnosi się do klasy, a nie do instancji. A klasa nie może działać jako delegat.
W zależności od tego, jak wygląda Twój singleton, odpowiedź brzmi: tak lub nie.