Czy aplikacje oparte na Swift będą działać na OS X 10.9 (Mavericks) / iOS 7 i niższych?
Na przykład mam komputer z systemem OS X 10.8 (Mountain Lion) i zastanawiam się, czy aplikacja napisana w Swift będzie na nim działała.
Lub co powinienem stworzyć, aby stworzyć aplikację Swift w systemie Mac OS?
Odpowiedzi:
Właśnie go przetestowałem, aplikacje Swift kompilują się w standardowe pliki binarne i można je uruchomić w systemie OS X 10.9 i iOS 7.
Prosta aplikacja Swift używana do testowania:
źródło
UIViewController
po dwukropku reprezentuje typ zmiennej, a drugie wystąpienie po=
znaku wywołuje konstruktor (inicjuje zmienną).Kod Swift można wdrożyć w systemie OS X 10.9 i iOS 7.0. Zwykle ulega awarii podczas uruchamiania w starszych wersjach systemu operacyjnego.
źródło
Apple ogłosiło, że aplikacje Swift będą wstecznie kompatybilne z iOS 7 i OS X Mavericks. Aplikacja WWDC jest napisana w Swift.
źródło
Aktualizacja - zgodnie z Xcode 6 Beta 4
Z informacji o wersji Xcode 6
Moja poprzednia odpowiedź (pokazana poniżej) nie będzie miała zastosowania do dalszego rozwoju. Swift nie będzie już dostępny dla iOS6 i niższych
Aplikację Swift można uruchomić na iOS 6. Chociaż wiele osób twierdzi, że Swift będzie obsługiwać tylko iOS 7+ i OS X 10.9+, z mojego doświadczenia wynika, że nie.
Przetestowałem prostą aplikację napisaną całkowicie w Swift na urządzeniu z systemem iOS 6. Działa idealnie dobrze . Jak mówi Apple, kod Swift jest binarnie zgodny z kodem Objective-C. Do utworzenia pliku binarnego używa tego samego kompilatora i środowiska wykonawczego.
Oto kod, który przetestowałem:
Jest to prosta aplikacja, po prostu programowo dodająca przycisk. Moja aplikacja zawiera tylko dwa pliki
AppDelegate.swift
iViewController.swift
.Jeśli więc nie używasz żadnych nowych interfejsów API dodanych jako część zestawu SDK systemu iOS 8 lub niektórych interfejsów API Swift (odpowiedni interfejs API nie jest dostępny dla Objective-C), aplikacja będzie bezproblemowo działać na iOS 6 lub nowszym (przetestowanym i działającym), nawet na iOS 5 (nie testowane). Większość interfejsów API w Swift to tylko zamiana istniejących interfejsów API Objective-C. W rzeczywistości są one takie same w systemie binarnym.
Uwaga: Zgodnie z Xcode 6 beta 4 celem szybkiego wdrożenia aplikacji powinien być system iOS 7 lub OS X 10.9 (patrz powyższa aktualizacja). Więc swift nie będzie już dostępny dla iOS6 i niższych
źródło
W skrócie:
Dzięki tej samej aplikacji aplikacje oparte na systemie Swift mogą być kierowane z powrotem na system OS X Mavericks lub iOS 7 .
Jak to jest możliwe ?
Xcode osadza małą bibliotekę środowiska wykonawczego Swift w pakiecie aplikacji . Ponieważ biblioteka jest osadzona, Twoja aplikacja korzysta ze spójnej wersji Swift, która działa w poprzednich, obecnych i przyszłych wersjach systemu operacyjnego.
Dlaczego mam ufać tej odpowiedzi?
Ponieważ nie mówię tej odpowiedzi, jak ktoś z jabłek powiedział mi na Twitterze lub napisałem cześć światu i przetestowałem.
Wziąłem go z blogu programistów Apple .
więc możesz temu zaufać.
źródło
Swift używa tego samego środowiska wykonawczego co Objective-C i może nawet żyć obok siebie Objective-C w tej samej aplikacji (zgodnie z uwagą WWDC 2014).
Będzie to wymagało sprawdzenia / weryfikacji za pomocą Xcode 6 i nowego zestawu SDK, aby znaleźć ostateczną odpowiedź.
źródło
Przeczytałem wszystkie odpowiedzi, które brzmiały: Nie, Swift nie działa z wersją mniejszą niż iOS 7. Ale powiedziałem TAK , właśnie stworzyłem projekt Swift, który działa w Xcode 5 z celem wdrożenia 6.0.
Następnie projekt działa dobrze w symulatorze 6.1 . My MacOS X 10.9.3 , więc powiedziałem tak, że przebiega w niższej niż iOS 7. 10.9.3 Mac OS X .
Oto zrzut ekranu symulatora:
Oto również demo
źródło
Podczas gdy kod to potwierdza, sam Apple powiedział, że Swift będzie kompatybilny z iOS 7 i Mavericks w swoim głównym wystąpieniu technicznym ( stan platform , sesja 102, około 34 minut 00 sekund) na WWDC 2014 .
źródło
Aplikacje Swift są obsługiwane w systemie iOS 7 i nowszych, jak podano w informacjach o wersji Beta 4.
iOS 6.0, 6.1, 7.0, 7.1, 8.0 w Xcode 6 BetaAplikacje Swift są obsługiwane na platformach OS X 10.9 i nowszych .
OS X 10.4–10.10 w obszarze docelowym wdrażania. Testowałem na celowaniu od 10.5 do 10.10 i na 10.9.3źródło
Wygląda na to, że aplikacje Swift nie działają w systemie OS X 10.7 . Właśnie stworzyłem prostą aplikację GUI (widok, etykieta, przycisk), która działa dobrze na Mavericks. Podstawowy zestaw SDK jest ustawiony na 10,9, a docelowy poziom wdrożenia na 10,7. Skopiowałem tę aplikację z folderu DerivedData na maszynę wirtualną w wersji 10.7 i ulega awarii podczas uruchamiania, pokaż ten błąd:
Jednak ta wiadomość jest irytująca, ponieważ z pewnością w tej maszynie wirtualnej jest biblioteka CoreGraphics. Inne aplikacje wykorzystujące CoreGraphics działają dobrze.
źródło
Oto post, który przeczytałem z bloga Apple Swift, może być pomocny:
Kompatybilność aplikacji :
Jeśli napiszesz aplikację Swift, możesz mieć pewność, że będzie ona dobrze działać w przyszłości. W rzeczywistości możesz kierować z powrotem na OS X Mavericks lub iOS 7 za pomocą tej samej aplikacji. Jest to możliwe, ponieważ Xcode osadza małą bibliotekę środowiska wykonawczego Swift w pakiecie aplikacji. Ponieważ biblioteka jest osadzona, Twoja aplikacja korzysta ze spójnej wersji Swift, która działa w poprzednich, obecnych i przyszłych wersjach systemu operacyjnego.
Kompatybilność binarna i ramy:
Podczas gdy zapewniona jest kompatybilność środowiska wykonawczego aplikacji, sam język Swift będzie nadal ewoluował, a interfejs binarny również się zmieni. Ze względów bezpieczeństwa wszystkie komponenty aplikacji powinny być zbudowane przy użyciu tej samej wersji Xcode i kompilatora Swift, aby zapewnić ich współpracę.
Oznacza to, że ramami należy ostrożnie zarządzać. Na przykład, jeśli twój projekt korzysta ze szkieletów do współdzielenia kodu z osadzonym rozszerzeniem, będziesz chciał zbudować razem szkielety, aplikację i rozszerzenia. Opieranie się na strukturach binarnych korzystających z Swift byłoby niebezpieczne - zwłaszcza od stron trzecich. Gdy zmieni się Swift, te frameworki będą niekompatybilne z resztą Twojej aplikacji. Kiedy interfejs binarny ustabilizuje się za rok lub dwa, środowisko wykonawcze Swift stanie się częścią systemu operacyjnego hosta i to ograniczenie przestanie istnieć.
źródło
Testowałem uruchomienie aplikacji Swift bez podstaw na urządzeniu iPod Touch (3. generacji). Wydaje się, aplikacje oparte Swift nie zrobić pracę z iOS 5.x ale zrobić pracę z iOS 6.x.
Oto, co pojawia się w dzienniku debugowania, gdy próbowałem uruchomić aplikację testową z iOS 5.0.1:
W systemie iOS 6.1.6 aplikacja działa poprawnie bez wyświetlania tych komunikatów o błędach.
źródło
Wydaje się, że jest tu wiele starych odpowiedzi, więc chciałem tylko opublikować oficjalną odpowiedź zespołu Swift. Swift jest wstecznie kompatybilny z OS X Mavericks i iOS 7
Swift blog programisty Apple: Identyfikator celu C jako Swift Any
11 lipca 2014 r
Zgodność
Jednym z najczęstszych pytań, jakie słyszeliśmy w WWDC było: „Jaka jest historia kompatybilności Swift?”. To wydaje się świetnym pierwszym tematem.
Zgodność aplikacji Mówiąc najprościej, jeśli napiszesz dziś aplikację Swift i prześlesz ją do App Store jesienią tego roku, kiedy zostaną wydane iOS 8 i OS X Yosemite, możesz mieć pewność, że Twoja aplikacja będzie działać dobrze w przyszłości. W rzeczywistości możesz kierować z powrotem na OS X Mavericks lub iOS 7 za pomocą tej samej aplikacji. Jest to możliwe, ponieważ Xcode osadza małą bibliotekę środowiska wykonawczego Swift w pakiecie aplikacji. Ponieważ biblioteka jest osadzona, Twoja aplikacja korzysta ze spójnej wersji Swift, która działa w poprzednich, obecnych i przyszłych wersjach systemu operacyjnego.
źródło
Próbowałem też bardzo prostej aplikacji na 10,8 (jeden przycisk, ustawia tekst na etykiecie). Rozbił się przy starcie, jak stwierdził Greg Parker:
(Użyto celu wdrożenia 10,7)
źródło
Wypróbuj następujący kod:
Działa bez StoryBoard:
źródło
Tak, w rzeczywistości Apple ogłosił, że aplikacje Swift będą wstecznie zgodne z iOS 7 i OS X Mavericks. Ponadto aplikacja WWDC jest napisana w języku programowania Swift.
źródło
Jeśli chodzi o Swift Frameworks. Na dzień dzisiejszy, w przypadku Xcode w wersji 6.1.1 (6A2008a), jeśli środowisko Swift jest ukierunkowane na system iOS 7.1, ostrzeżenie o raporcie linkera
i aplikacji nie można przesłać do AppStore. Sprawdź ten problem: Lint, aby zapobiec przekazywaniu bibliotek dynamicznych i frameworków z iOS 7
źródło
Mach-O Type
musi byćDynamic Library
jednak iOS 7 akceptujeStatic Library
tylko.Szybka aktualizacja, obowiązująca od 15 lutego 2015 r. , Nie możemy przesyłać do sklepu aplikacji, które zostały opracowane przy użyciu pakietu SDK wcześniejszego niż iOS 8 . Mając to na uwadze, lepiej nie martwić się tym problemem, ponieważ wiele osób sugerowało, że aplikacje utworzone w Swift można wdrożyć również w systemie OS X 10.9 i iOS 7.0 .
źródło
Fragment kodu wysłany przez Leandrosa wydaje się nieco stary. Naprawiłem i uczyniłem go kompilowalnym w Swift 5.
Szybki 5
źródło