Swift używa "automatycznego liczenia odwołań", aby zwolnić obiekty, które nie są już przywoływane, a zatem nie są już potrzebne. Przewodnik język Swift [1] stwierdza co następuje:Możliwość przepełnienia ARC w Swift?
Za każdym razem utworzyć nową instancję klasy, ARC alokuje fragment pamięci do przechowywania informacji o tej instancji. Ta pamięć zawiera informacje o wartościach [...] wszystkich przechowywanych właściwości powiązanych z tą instancją.
Zakładam, że licznik odwołań zostanie zapisany jako liczba całkowita. Czy licznik referencyjny może mieć nadmiar? Jeśli tak, jakie będą tego konsekwencje dla mojego programu, czy obiekty, do których odwołują się inni, po prostu zostaną zwolnione?
Jako przykład: jeśli licznik byłby na przykład liczbą całkowitą bez znaku 2-bajtowego, wówczas górny limit odniesień do obiektu (przy wciąż prawidłowej liczbie odnośników) wynosiłby około 130k. Po osiągnięciu tego górnego limitu i ponownym przywołaniu obiektu, zwiększy to licznik o jeden, ustawiając go ponownie na 0.
4294967296 referencje? Wowz. Czy ty ... masz wystarczająco dużo pamięci, aby to zrobić? – Zizouz212
Mam świadomość, że pytanie jest raczej hipotetyczne, zachowanie w tym przypadku jednak mnie zainteresuje;) – Benjamin