Jako początkujący programista iPhone'a, jaka jest najlepsza praktyka przy pisaniu aplikacji, które mają być używane z iOS 5 lub starszymi wersjami? W szczególności, czy powinienem nadal korzystać z udostępniania / zatrzymywania danych, czy powinienem to zignorować? Czy to ma znaczenie?
109
Odpowiedzi:
To zależy od Ciebie. Możesz pisać aplikacje za pomocą ARC (Automatic Reference Counting), a Xcode zapisze „kod kleju”, aby umożliwić aplikacjom obsługującym ARC działanie w systemie iOS 4 bez konieczności modyfikacji. Jednak niektóre rzeczy nie zadziałają, a najbardziej zauważalne jest, że wiele bibliotek, których możesz chcieć użyć, (czasami) generuje niezliczone błędy i nie będziesz mógł z nich korzystać, dopóki programiści nie wydadzą aktualizacji zgodnej z ARC.
Edycja : Niedawno odkryłem, że możesz wyłączyć ARC dla każdego pliku. Zobacz pixelfreak odpowiedź „s . Tak więc moja rada jest nadal aktualna, ale teraz biblioteki innych firm nie powinny wymagać aktualizacji do pracy z ARC.
Oto, co Apple mówi o rezygnacji z ARC dla określonych plików:
Zobacz pełny przewodnik dotyczący przenoszenia tutaj .
źródło
-fno-objc-arc
JSONKit
na przykład. Spróbuj przeprowadzić to przez sprawdzenie ARC. Zobaczysz, co mam na myśli. ;)Dla każdego, kto wciąż jest ciekawy, jak wyłączyć ARC w poszczególnych plikach, oto co zrobiłem:
Build Phases > Compile Sources
Nie wiem, czy to zalecany sposób, ale u mnie działa.
PS: Zebrałem te informacje z clang.llvm.org tutaj, które są publicznie dostępne, a więc nie na mocy NDA.
źródło
iOS 5 jest nadal objęty umową o zachowaniu poufności i prawdopodobnie będzie obowiązywać do czasu udostępnienia publicznej wersji. Jeśli masz konto programisty, przejdź do forów programistów Apple i zapytaj.
W przypadku poprzednich wersji musisz policzyć odniesienia i odpowiednio zachować i zwolnić. Sprawdź przewodnik zarządzania pamięcią .
Edycja: Oto publiczna specyfikacja automatycznego liczenia referencji i cytat z publicznej strony iOS 5 :
źródło
Szczegóły są obecnie niewielkie / objęte umową NDA, ale firma Apple wdrożyła automatyczne zliczanie referencji (ARC) w iOS 5, jak opisano tutaj: http://developer.apple.com/technologies/ios5/
Jeśli tworzysz nową aplikację w Xcode 4 z zestawem SDK systemu iOS 5, możesz bezpiecznie zignorować liczenie zachowań / wydań.
[edytuj] sudo rm -rf ma rację; może mieć to znaczący wpływ na biblioteki stron trzecich
źródło
Nikt nie wspomniał o SystemConfiguration.framework ? Nie zapomnij umieścić go w Framework . Żałośnie spędziłem kilka godzin, aby to zrozumieć.
źródło
Z pewnością jest to wybór dewelopera lub zespołu. ARC (Automatic Reference Counter) nieco ułatwiło sprawę, automatycznie zarządzając pamięcią za Ciebie. W razie potrzeby zwolni, zachowa i cofnie przydział. Uważam, że doświadczenie w zarządzaniu pamięcią powinieneś zdobyć samodzielnie, najlepiej w aplikacji testowej, jeśli jeszcze tego nie zrobiłeś. Inną rzeczą do rozważenia jest to, czy Twoja aplikacja opiera się na bibliotekach innych firm, które, jeśli nie zostaną przekonwertowane na ARC, uniemożliwi kompilację aplikacji. Wybór zależy oczywiście od aktualnej sytuacji.
źródło
ustaw flagę jako -fno-objc-arc w ustawieniach projektu> Fazy kompilacji> Kompiluj źródła
źródło