2015-04-19 15 views

Odpowiedz

6

nie można używać:

use_frameworks!

z iOS7.

+1

Oznacza to, że nie można zbudować projektu obsługującego iOS 7+ w Swift przy użyciu CocoaPods, prawda? –

14

Nie, nie ma. use_frameworks! włącza obsługę Swift, budując swój kod w nowym dynamic frameworks. Dynamiczne frameworki obsługują tylko system iOS 8. Niestety, ponieważ nie można używać Swift w statycznych bibliotekach (poprzednio biblioteki dołączane do CocoaPods), był to jedyny sposób na połączenie plików Swift.

4

UPDATE: Okazało się, można rzeczywiście wdrożyć ramy dynamicznych na iOS 7. Nie poprzez Cocoapods, prawdopodobnie, choć. Instrukcje (podziękowania, @ user102008!): Deploying a Containing App to Older Versions of iOS. Ta aktualizacja nie odpowiada na oryginalne pytanie, ale została dodana w celu wyjaśnienia mojej starej odpowiedzi na podstawie nowych informacji.


Notatka, która, jak sądzę, jest na tyle ważna, aby być odpowiedzią. Dynamiczne frameworki są faktycznie obsługiwane na iOS 7, a możesz uruchamiać kod przy użyciu dynamicznych frameworków na urządzeniu iOS 7. Jednak iOS 7 nie obsługuje ramek firm trzecich w trybie fair-play. Z tego powodu próba przesłania aplikacji na iOS7 przy użyciu dynamicznych frameworków do iTunesConnect zostanie odrzucona (one prooflink).

Myślę, że to ważne, ponieważ może się wydawać, że działa, ale tak nie jest. A jeśli zignorujesz ostrzeżenie, możesz zbyt późno natknąć się na problem, kiedy połowa projektu jest już w Swift.

Napotkaliśmy ten problem, gdy zaczynaliśmy rozwijać własną kapsułę. Projekt skompilował i działał dobrze na iOS 7. Dobrze, że zbadaliśmy ten problem dalej.

+1

"jeśli próbujesz przesłać aplikację na iOS7 przy użyciu dynamicznych struktur do iTunesConnect, zostanie ona odrzucona." To nieprawda, że ​​aplikacja przesłana do sklepu z aplikacjami target iOS 7 nie może mieć dynamicznych ram. Tak, zostanie odrzucone, jeśli aplikacja będzie łączyła się z dynamiczną ramą w czasie kompilacji. Ale [Apple zapewnia instrukcje] (https://developer.apple.com/library/content/documentation/General/Conceptual/ExtensibilityPG/ExtensionScenarios.html#//apple_ref/doc/uid/TP40014214-CH21-SW3), aby dowiedzieć się, jak nie łączyć go w czasie kompilacji, ale dynamicznie łączyć go w środowisku wykonawczym, używając 'dlopen' tylko podczas pracy na iOS 8+. – user102008

+0

@ user102008 Dzięki! Nie wiedziałem o tym. Dobrze wiedzieć. Zaktualizowałem odpowiedź, aby uwzględnić te informacje. – FreeNickname

Powiązane problemy