Pobrałem SDK dla systemu iOS 5 i odkryłem, że ARC to świetna funkcja nowego kompilatora Apple. Na razie wiele platform zewnętrznych nie obsługuje ARC. Czy mogę użyć ARC do mojego nowego kodu i zachować bieżący kod zatrzymania / zwolnienia bez zmian? Konwerter ARC nie działa tutaj, ponieważ niektóre frameworki, takie jak JSONKit, nie mogą zostać przekonwertowane na ARC za pomocą konwertera.
Edytować:
Odpowiedzią jest dodanie -fno-objc-arc
do flag kompilatora plików, których nie chcesz ARC. W Xcode 4 możesz to zrobić pod swoim celem -> Fazy kompilacji -> Kompiluj źródła.
objective-c
ios5
automatic-ref-counting
niemiły
źródło
źródło
.m
pliku. Nie.h
plik.Odpowiedzi:
Publiczne dokumenty ARC , choć nie są jednoznaczne w tej kwestii, zdają się sugerować, że dopóki każda klasa jest w całości ARC lub zarządzana ręcznie, klasy mogą być zintegrowane w jednym programie.
Nie można mieszać ARC i innych niż ARC w jednej klasie; Dokument mówi, że wysyłanie
retain
,release
,autorelease
, lubretainCount
wiadomości w jakikolwiek sposób (w tym timerów i opóźnionych preform, które używają@selector
) jest zakazane w kodzie ARC. Nie możesz więc wykonywać operacji bez ARC w klasie ARC (ponieważ niezbędne wiadomości są zbanowane) i nie możesz wykonywać ARC w klasie innej niż ARC (ponieważ ARC dodaje elementy składniowe, które są niepoprawne bez ARC).Ten sam dokument wyjaśnia, czy można zintegrować biblioteki / frameworki inne niż ARC z programem ARC: Tak. Nie wspomina, czy możesz używać bibliotek / frameworków ARC w programie, w którym cały twój kod nie jest ARC, ale biorąc pod uwagę wszystkie powyższe, implikacja wydaje się tak.
źródło
#import
ich pobranie z plików modułów. Ustawienie flag kompilatora dotyczy każdego pliku modułu (a dokładniej każdego pliku w fazie kompilacji „Źródła kompilacji”). Kompilator nie ma sposobu, aby dowiedzieć się, czy powinien używać ARC, czy nie dla żadnego innego pliku, poza dziedziczeniem wyboru, który został podany dla pliku modułu, z którym zaczął.Nie jest bardzo intuicyjne, jak wyłączyć ARC na WIELU plikach, przez pewien czas robiłem to jeden po drugim, dopóki nie wymyśliłem, jak to zrobić.
źródło
Jeśli chcesz wyłączyć automatyczne zliczanie odniesień dla niektórych plików, to bardzo proste jest po prostu wykonać następujące czynności. Dodajesz flagi kompilatora w Celach -> Fazy budowania -> Źródła kompilacji.
Użyta flaga to -fno-objc-arc naciśnij klawisz Enter po zapisaniu.! Musisz dwukrotnie kliknąć prawą kolumnę wiersza pod Flagi kompilatora. Mam nadzieję, że to pomaga Dzięki :)
źródło
-fobjc-arc
.Możliwe jest wyłączenie ARC dla pojedynczych plików przez dodanie flagi kompilatora -fno-objc-arc dla tych plików.
Jak mogę wyłączyć ARC dla pojedynczego pliku w projekcie?
źródło