Śledzenie cykli przechowywania w Xcode może być trudne. To jest artykuł (z przykładem), który pomoże Ci korzystać z tej wspaniałej funkcji!
Trudność: Początkujący | Łatwe | Normalny | Wymagające
Ten artykuł został opracowany przy użyciu Xcode 11.5 i Swift 5.2.4
Cykle przechowywania mogą powodować wycieki pamięci. Jeśli obiekt główny tworzy grupę obiektów, które łączą się ze sobą silnymi odniesieniami, a później ta grupa zostaje zwolniona, nie można jej uwolnić za pomocą pamięci.
Dzieje się tak, ponieważ stosowane jest zliczanie odniesień i za każdym razem, gdy odniesienie jest usuwane, liczba zmniejsza się o jeden, a obiekt można zwolnić tylko wtedy, gdy liczba odniesień dla tego obiektu wynosi zero.
Cykl odniesienia oznacza, że liczba odwołań nigdy nie może osiągnąć zera i nie można zwolnić obiektów, co powoduje wyciek pamięci — co oznacza, że używana pamięć nigdy nie jest ponownie zwalniana do wykorzystania w systemie.
Mamy dwie klasy, a Parenti Childklasę. Teraz rodzic może mieć jedno dziecko (w tym przykładzie), a dziecko zawsze ma samotnego rodzica.
W Swift właściwości mają silne referencje (w przeciwieństwie do słabych lub nieposiadanych ), więc wszystkie referencje są tutaj mocne.
Cykl przechowywania odbywa się pomiędzy rodzicem i dzieckiem — żadne z nich nie może zostać zwolnione, nawet jeśli instancja UIViewController, która je utworzyła, już nie istnieje. Skoro o tym mowa, oto UIViewControllerinstancja twórczo nazwana jako ViewController:
Zatem UIViewControllertworzy a Parenti Child, które zostanie zachowane nawet jeśli ViewControllerjuż nie istnieje, ponieważ Childtrzyma się Parent(i odwrotnie) z silnymi odniesieniami.
Wszystko to można pobrać z repozytorium , dzięki czemu możesz zobaczyć to w praktyce.
Kiedy realizujemy projekt, nic złego się nie dzieje. Świetnie!
Jednak rozmowa kwalifikacyjna, którą odbyłeś, odrzuci Cię z Twojego cyklu zatrzymania.
Użyjmy debugera pamięci Xcode, aby faktycznie zobaczyć cykl pamięci.
Zatem po uruchomieniu projektu, w prawym dolnym rogu okna Xcode widzimy następujący pasek narzędzi:
przejdźmy do tego krok po kroku: ikona debugera pamięci jest podświetlona czerwonym prostokątem na poniższym obrazku:
oznacza to, że kliknij następujący obraz:
Xcode zajmie sekundę, aby zbudować wykres pamięci i powinieneś zobaczyć problem. Zobaczysz fiolet! po lewej stronie ekranu.
Kliknięcie dwóch fioletowych wykrzykników daje nam kilka obrazów przedstawiających cykl zachowywania. Widzimy także informację, że klasy Childi Parentstanowią problem. Cóż, w tym przypadku o tym wiemy, ale w przyszłości powinniśmy skorzystać z tej funkcji i podziękować za to Xcode!
W tym cyklu wszystko jest mocne! Możemy to naprawić, osłabiając relację Parent-> Child.
Wracając do wykresu pamięci, widzimy, że nie ma już cyklu przechowywania
Radość!
Xcode ma świetne narzędzia w instrumentach i niektórzy wolą z nich korzystać. Jednakże debuger pamięci wizualnej to świetne narzędzie, które pozwala nam zobaczyć te irytujące problemy, które możesz mieć w swoim kodzie.
To kolejne świetne narzędzie, jakie możemy mieć do dyspozycji!
Jeśli masz jakieś pytania, komentarze lub sugestie, napisz do mnie na Twitterze
W tym tygodniu otrzymałem wiadomość e-mail od członka codziennej listy e-mailowej. Chcieli wiedzieć: Jakie zasoby odwiedzasz codziennie, co tydzień i co miesiąc? Świetne pytanie! Cieszę się, że mogę podzielić się spostrzeżeniami na temat mojego przepływu pracy i najlepszych zasobów, z których korzystam.
Terminale, powłoki i narzędzia wiersza poleceń wyznaczają standardy w 2023 roku. Wszyscy programiści używają terminali; dla niektórych cały przepływ pracy to terminal Ten post przedstawia Hypermodern Terminal Toolbox — narzędzia terminala, powłoki i wiersza poleceń wyznaczające standardy w 2023 roku Kitty jako emulator terminala Kitty to emulator terminala — alternatywa dla terminala GNOME , Alacritty lub Windows Terminal.
Kiedy dorastasz, zwykle słyszysz, że świat jest taki, jaki jest, a twoje życie polega na tym, by żyć swoim życiem w świecie, nigdy nie ryzykując życia, po prostu podążaj wyznaczoną ścieżką i umrzyj w końcu i staraj się nie za bardzo walnij w ściany. Ale to bardzo ograniczone życie.
To, co stare, jest teraz znowu nowe, a to, co kiedyś było lśniącą, błyszczącą rzeczą, teraz wydaje się nudne. Nie mówię o dżinsach JNCO, które powróciły wśród fajnych dzieciaków w śródmieściu wraz z innymi modami późnych lat 90.
Każdy racjonalnie myślący wie, że w kręgach politycznych i medialnych dominuje lewica, nawet skrajna lewica, co powoduje zachwianie równowagi w dyskursie politycznym. W dziedzinie religii ta nierównowaga jest wyraźnie widoczna: lewicowe gazety i sieci nie spieszą się z obroną wiary chrześcijańskiej.
Wczoraj zamknęliśmy drzwi tegorocznego Konkursu Piosenki Eurowizji błyskotliwym, chaotycznym wielkim finałem, w którym szwedzka piosenkarka Loreen zabrała do domu trofeum, stając się pierwszą kobietą, która wygrała dwa razy i przywracając koronę Szwecji 50 lat po tym, jak ABBA wygrała konkurs z „Waterloo”. Stali się jednym z największych zespołów w kanonie muzyki pop.