iOS 5 Best Practice (Release/retain?)

Jako początkujący programista iPhone, jaka jest najlepsza praktyka pisania aplikacji do użytku z iOS 5 lub starszymi wersjami? W szczególności, czy powinienem nadal korzystać z udostępniania / przechowywania danych, czy powinienem to zignorować? Czy to ważne?

Author: Roberto Canogar, 2011-06-10

7 answers

To zależy od Ciebie. Możesz pisać aplikacje za pomocą ARC (automatyczne liczenie referencji), a Xcode napisze "kod kleju", aby umożliwić działanie aplikacji z obsługą ARC na iOS 4, Bez Modyfikacji. Jednak niektóre rzeczy nie będą działać, a najbardziej zauważalnie wiele bibliotek, których możesz chcieć użyć, (czasami) wyrzuci niezliczone błędy i nie będziesz mógł ich używać, dopóki deweloperzy nie wydadzą aktualizacji, która jest kompatybilna z ARC.


Edit : niedawno odkryłem, że ty można wyłączyć łuk na podstawie pliku. Zobacz też pixelfreak's answer . Więc, moja rada nadal jest aktualna, ale teraz biblioteki 3rd-party nie powinny być aktualizowane do pracy z ARC.

[[0]}oto, co mówi Apple o rezygnacji z ARC dla określonych plików:

Podczas migracji projektu do ARC, flaga kompilatora-fobjc-arc jest Ustaw jako domyślne dla wszystkich plików źródłowych Objective-C. Możesz wyłączyć ARC dla określonej klasy używającej flagi kompilatora-fno-objc-arc na ta klasa. W Xcode, w zakładce fazy budowania docelowego, otwórz kompilację Grupa źródeł do ujawnienia listy plików źródłowych. Kliknij dwukrotnie plik dla którego chcesz ustawić flagę, wpisz-fno-objc-arc w wyskakującym okienku panel, a następnie kliknij Gotowe.

Tutaj wpisz opis obrazka

Zobacz pełny przewodnik przejścia tutaj .

 99
Author: sudo rm -rf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:53:25

Dla wszystkich, którzy nadal są ciekawi, jak wyłączyć ARC na poszczególnych plikach, oto co zrobiłem:

  1. przejdź do ustawień projektu, pod Build Phases > Compile Sources
  2. Wybierz pliki, które chcesz wyłączyć ARC i dodaj flagi kompilatora -fno-objc-arc. Możesz ustawić flagi dla wielu plików w jednym ujęciu, wybierając pliki, a następnie naciskając klawisz "Enter".

Nie wiem, czy jest to zalecany sposób, ale działa na mnie.

PS: zebrałem te informacje z clang.llvm.org tutaj {[15] } który jest publicznie dostępny, a więc nie pod NDA.
 171
Author: pixelfreak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-04 05:43:32

IOS 5 jest nadal pod NDA i prawdopodobnie będzie, dopóki nie wydadzą wersji publicznej. Jeśli masz konto dewelopera, przejdź do forum programistów Apple i zapytaj tam.

W przypadku poprzednich wersji należy odpowiednio policzyć referencje i zachować je i wydać. Zapoznaj się z instrukcją zarządzania pamięcią .

Edit: Oto public spec for Automatic Reference Counting oraz cytat z public iOS 5 Strona :

Automatyczne zliczanie referencji (ARC) dla Objective-C sprawia, że zarządzanie pamięcią jest zadaniem kompilatora. Włączenie funkcji ARC za pomocą nowego kompilatora Apple LLVM sprawi, że już nigdy nie będziesz musiał wpisywać funkcji Zachowaj lub zwolnij, znacznie upraszczając proces tworzenia, jednocześnie redukując awarie i wycieki pamięci. Kompilator ma pełne zrozumienie obiektów i uwalnia każdy obiekt w momencie, gdy nie jest już używany, więc aplikacje działają tak szybko, jak kiedykolwiek, z przewidywalnym, płynnym wydajność.

 10
Author: nevan king,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-15 23:07:06

Szczegóły są lekkie / pod NDA w tej chwili, ale Apple zaimplementowało automatyczne liczenie referencji (ARC) w iOS 5, Jak szczegółowo tutaj: http://developer.apple.com/technologies/ios5/

Jeśli opracujesz nową aplikację w Xcode 4 z iOS 5 SDK, możesz bezpiecznie zignorować zachowaj / zwolnij liczenie.

[edytuj] sudo rm-rf]}

 4
Author: Dominic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-10 15:31:29

Nikt nie wspomniał Konfiguracja systemu.framework ? Nie zapomnij umieścić go w frameworkach . Spędziłem kilka godzin, żeby to zrozumieć.

 3
Author: ThinkChris,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-10 01:07:16

To z pewnością wybór dewelopera lub zespołu. ARC (Automatic Reference Counter) sprawił, że wszystko stało się łatwiejsze, automatycznie zarządzając pamięcią dla Ciebie. Będzie uwalniać, zatrzymywać i dealloc, gdy będzie to właściwe. Uważam, że powinieneś zdobyć doświadczenie w zarządzaniu pamięcią samodzielnie, najlepiej w aplikacji testowej, jeśli jeszcze tego nie zrobiłeś. Kolejną rzeczą do rozważenia jest to, czy aplikacja opiera się na bibliotekach innych firm, które jeśli nie zostaną przekonwertowane do ARC uniemożliwić kompilację aplikacji. Wybór zależy oczywiście od sytuacji.

 3
Author: Charles,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-29 19:51:12

Ustaw flagę jako-fno-objc-arc w ustawieniach projektu>fazy budowania > Skompiluj Źródła

 0
Author: Mubin Shaikh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-20 14:19:08