Vytvoril som statickú knižnicu, ktorá má cieľ nasadenia systému iOS 10.2. Knižnica je integrovaná v aplikácii, ktorá má cieľ nasadenia 9,0.
Aplikácia sa nejako zostavuje a funguje dobre v systéme iOS 9.0. Prečo? Mala by sa aplikácia vytvárať, aj keď je knižnica zacielená iba na iOS 10.2 a vyšší?
odpovede:
6 pre odpoveď č. 1Áno, Vaša zostava sa zostaví bez chyby, ak je súbor SDK vašej aplikácie rovnaký alebo vyšší ako cieľ nasadenia statickej knižnice.
Statická knižnica vnútorne je kopa vyhovujúcich objektov.po kompilácii vašej aplikácie v čase prepojenia skontroluje dostupnosť symbolov použitých v statickej knižnici. a ak je základná sada SDK vášho projektu rovnaká alebo vyššia ako cieľ nasadenia statickej knižnice, váš projekt nájde definíciu všetkých symbolov použitých v knižnici -Tak Žiadna chyba kompilátora.
Počas behu sa môže zobraziť chyba, ak používate aplikáciu v zariadení s verziou ios nižšou ako je cieľ nasadenia statickej knižnice a použili ste symboly, ktoré v tejto verzii nie sú k dispozícii.
Ak váš kód / knižnica používa symbol:
- Nie je definované v základnej súprave SDK hlavného projektu (napríklad a symbol z novšieho OS v knižnici), zobrazí sa chyba pri kompilácii.
- Definované v základnej súprave SDK, ale označené ako zastarané, sa zobrazí upozornenie za kompiláciu.
Definovaný v cieli nasadenia, váš kód sa spája a zostavuje normálne. V čase spustenia:
- V systéme, na ktorom je operačný systém starší ako cieľ nasadenia, je váš načítanie kódu sa môže zlyhať, ak v danom operačnom systéme používate symboly, ktoré nie sú k dispozícii.
- V systéme s OS rovným alebo neskorším ako nasadenie cieľ, váš kód má nulové ukazovatele na symboly, ktoré v tom nie sú k dispozícii OS.
zdroj: developer.apple.com
tu je Obrázok z vyššie uvedeného odkazu, ktorý vysvetľuje, aké symboly môžete použiť v závislosti od cieľa nasadenia a základnej sady SDK