Xcode

Tags: #<Tag:0x00007f8a1e3636e8> #<Tag:0x00007f8a1e363300>

Az Xcode-ból is új verzió érkezik lassan, amit érdemes megnézni. Az Apple szerint az Xcode 8 jelentősen gyorsabb lesz az elődjénél, új kiegészítőket kap, amivel sokkal jobban testre lehet szabni az IDE működését. Színrelép egy új template, ami megkönnyíti a kiegészítők írását. A kiegészítők saját processben futnak, ami biztonságosabbá és stabilabbá teszi az Xcode 8 működését.

Az Xcode 8 természetesen támogatja a Swift 3-at. A Swift 3 egységesíti az API elnevezési szabályokat (API Naming Guidelines), a felfedezéséhez pedig jó kiindulópont lehet a Swift Playgrounds.
Kevésbé játékos kedvű fejlesztők itt kezdhetik az ismerekedést: https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/GuidedTour.html#//apple_ref/doc/uid/TP40014097-CH2-ID1

Az Xcode 8 legizgalmasabb újdonsága szerintem a Thread Sanitizer, a frissülő View Debugger és a Memory Debugger, ami megkönnyíti a memory leaks azonosítását.

2 Likes

Már letöltöttem az Xcode8-at de csak az új API-k próbálgatása miatt. Viszont remélem, hogy a képen látható UI debug ablak hibáit kijavították, mert pont amit általában én használok (CoreImage) grafika, azok nem jó helyen, és nem jól jelentek meg. Már ha egyáltalán megjelent, mert volt olyan is, hogy csak fekete képernyő volt a helyén.

Ja amúgy korábban azt mondtam, hogy nem baj, ha nem kompatibilis visszafelé a Swift, de most, hogy ennyi mindent változtattak, ennyire átírtak a funkció neveit, most már látom, hogy mennyit fogok szívni főleg a most már gyakran használt külső komponensek miatt, amiknél várnom kell majd a frissítésre, hogy használni tudjam az új Swift-et.
(amúgy imádom a Swift-et, hihetetlen egyszerű és jó dolgokat csináltak benne)

1 Like

csak egy kérdés. jól gondolom, hogy a mostani 7.3.1 xcode és a béta 8-as xcode tud egy gépen külön-külön futni? vagy kell hozzá az új macos sierra?

Megy egymas mellett a ketto, es nem kell hozza a sierra.

Én is mindig felteszem a beta verziót a gépemre, mert sokszor kíváncsi vagyok az újdonságokra. De az az igazság, hogy nagyon bugosak szoktak lenni az első verziók. Ez az új is nekem többször kifagyott.

(átneveztem a topicot Xcode-ra, mert nem hiszem, hogy verziónként lenne értelme egy-egy új topiknak.)

Van egy projektem. Xcode 9 alatt hoztam létre és most Xcode 10-et használok még macOS10.13.6-on. Ez a projekt SpriteKit alapú. iOS 10-ig van a kompatibilitás visszafelé. Még kiadás előtt áll, de a tesztek nagy részét iOS11-en és iOS12-n futtattam mostanában, de korábban nézegettem néha iOS 10 szimulátorral is.

Ezt a projektet lemásoltam, mert ugyanerre épül majd a második projektünk is. Pontosabban új projektet hoztam létre és csak a releváns fájlokat másoltam át.

A lényeg, hogy az új projekt nevében van egy “-” jel. Hónapokkal a létrehozása és iOS 11 tesztek sokasága után leteszteltem az új projektet iOS10-en. És elhasalt már az elején a Scene betöltésénél.
Amikor létrehozom a SpriteKit alapú iOS játékot, akkor létrehozza az alap GameScene swift és sks fájlokat, valamint a GameViewController.swift fájlt. Ez utóbbiban semmit sem írtam át, még az eredeti kód van. A GameScene fájlnál meg nem változtattam meg az osztály nevét, tehát ugyanúgy GameScene a neve az osztálynak, mint eleinte.
A lényeg, hogy a GameViewController.swift elhasalt induláskor ennél a sornál:

if let sceneNode = scene.rootNode as! GameScene? {

Már eleve ez a sor is furcsa, miért oldották meg így, miért nem ez van:

if let sceneNode = scene.rootNode as? GameScene {

(Bár ennek persze az az előnye, hogy mindig crashel az app és felhívja a fejlesztők figyelmére hogy ott van a hiba és nem pedig csak az van, hogy szürke háttér van mindenkinek és nem indul el egyáltalán az app, és a fejlesztők meg néznek bambán, hogy miért nem tölti be a GameScene osztályt, amikor semmi sincs elírva és iOS11-en pedig jó…)
De ez most nem lényeg. A lényeg az, hogy több napig szívtam mire rájöttem, hogy a target nevében lévő “-” karakter miatt hasal el a kód. Kerestem neten megoldást, de azon kívül, hogy másnak is volt ilyen gondja, nem derült ki hogy mit lehet tenni. Írták néhányan, hogy egy új projektet kezdtek és úgy megoldódott (aztán persze lehet a projekt neve nem ugyanaz lett és ezért működött).
Én is csak úgy jöttem rá, hogy létrehoztam egy új “asdf” nevű targetet (nem új projektet), ami nem hasalt el kezdéskor. Majd elkezdtem átalakítani az eredeti Targethez képest (info plist, Build Phase, Build Settings, stb…) és egy idő múlva ez is elhasalt. Akkor kezdtem átnézni egyesével, hogy melyik módosítás az, ami kinyírja. És akkor jöttem rá, hogy amikor “-” jel van a target nevében, akkor elhasal a kód.
Szóval kb 2 napba telt mire rájöttem, hogy ez egy Apple bug, amit bármikor tudok reprodukálni. Persze be is jelentettem a bugreportnál. Kíváncsi leszek, hogy lesz-e belőle bármi, mert amit még nem tudok az az, hogy rendszer szinten van-e probléma vagy csak az Xcode fordítójában.

2 Likes

Na igen, ahogy sejtettem: Legújabb Xcode 10.2-höz Mojave kell, így kinyírtak egy csomó gépet, amin eddig még lehetett fejleszteni. Bár ezek nagy része már azért legalább 6 éves…

Nyilvan 8 eves, de egy 2011-es i7-es iMac a maga majdnem 13 ezres GB4 pontjaval nem rosszabb, mint egy 2017-es MacBook Pro 13", tekintve, hogy az Xcode build pont az a feladat, ami rettentoen jol parhuzamosithato. Nekem is foloslegesse valt igy az iMac 2011, viszont azt meg nem dontottem el, hogy 850-ert veszek uj iMacet vagy 450-ert 5k LG monitort a 13"-as 2018-as MBP-hez.

1 Like

A legújabb Xcode jól szétcseszett valamit. Mac-es alkalmazás teljesen jól működik Xcode-ból, archive után developmentben exportolva egy nagy blank screen az egész. Magyarul csak Xcodeból futtatva működik az app. Ilyenkor mivan?

Megfejted, hogy mi tortent? Megnezed, hogy minden benne van-e az app bundleben? stb?

Annyi történt, hogy frissítettem az Xcodeot. Most csináltunk egy tesztet egy másik gépen, amin még a eggyel régebbi Xcode van fent, átmásolva a projektet teljesen jól működik export után. Itt valami bug lesz az újban.
Nem tudom, hogy minden benne van e, a .app az igen, meg ránézésre minden ami kell.

Kiderült utólag valami erről az ügyről? Kíváncsi lennék, hogy tényleg bug volt-e vagy sem.

Azóta frissítettünk 10.2.1-re, de azzal sem jó. Úgyhogy van egy gépünk, amin még régebbi Xcode verzió fut, így arról tudunk exportálni gond nélkül.

faxa

Őszintén szólva kissé csalódott vagyok. Persze őszintén szólva gondoltam, hogy ez lesz…
A lényeg, hogy az új SwiftUI preview csak az új macOS betával működik. Persze maga a SwiftUI megy az előző rendszeren is az új Xcode-dal, csak a preview nem.
Most, hogy el akartam kezdeni megnézni a tutorialt, az első soroknál ez fogad :(

Section 1

Create a New Project and Explore the Canvas

Create a new Xcode project that uses SwiftUI. Explore the canvas, previews, and the SwiftUI template code.

To preview and interact with views from the canvas in Xcode, ensure your Mac is running macOS 10.15 beta.

Vannak a “NAGY” asszonyok, Erica Sadun.

A referencenél írják, hogy minimum macOS 10.15-re van szükség vagy UIKit verzióval maxOS 10.13. A munkahelyi gépemen Mojave-ra letöltöttem az Xcode 11 bétát, ott is szépen fut. Viszont a “feature”-ök jó része nem érhető el csak 10.15 után: preview és a command+click kattintás bárhol és így az automatikus kód kiegészítés sem megy (kattintásos- kiválasztásos módszerre gondolok).

https://developer.apple.com/documentation/swiftui/

Szóval hiába meg tudja jeleníteni a playgroundban is, attól pont a lényege veszlik el, hogy bármit bárhol (még a previewban is) lehet módosítani és frissül a kód.

A másik ami eszembe jut, hogy ez a SwiftUI megint nagyon szép és jó, de megint csak pár év múlva lesz igazán használható. Legalábbis ha szerenénk pár évig visszamenőleg támogatni iOS verziókat.

Nekem egyebkent fenntartasaim vannak a SwiftUI-val. Kicsit olyan erzes, mint a Javascriptes frameworkok es azok UI megoldasai (ugy erzem egyebkent, mintha azert kellett letrehozni, hogy a JS iranybol atcsabitott emberek szamara otthonos legyen a felulet). A Storyboard ad egy keretet az alkalmazasnak, ott meg tudom nezni, hogy milyen az UI, milyen UI elem milyen sajat Class es igy mindent meg tudok talalni. SwiftUI eseteben meg kitudja ki hova es hogyan fog UI-t pakolni. Talalkoztam olyan projekttel, ahol a fejlesztok elvbol nem hasznaltak se xib/nib se storyboardot UI szerkesztesre igy minden egyes UI dolgot kodbol hoztak letre. Egy kaosz volt az egesz.

A storyboardnak egyetlen egy hátránya van, hogy megnöveli a build időt, és az egész xcode sokat tölt ha nagy. Mondjuk ezt ugye lehet storyboard referencessel orvosolni…
Viszont én sem szeretem azt, ha nincs storyboard. Főleg ha mondjuk egy olyan projekthez kell nyúlni, amihez nem nyúltunk mondjuk fél éve. Azonnal átlátható a flow, míg mondjuk ha csak kód lenne akkor nem.
Arról nem is beszélve, hogy rengeteg plusz kódot jelent a UI-t teljes mértékben programozni, sokkal kevésbé lesz átlátható.
“elvbol nem hasznaltak se xib/nib se storyboardot” -> épp az lenne az elv hogy használjuk, hiszen azért van. Ha nem lenne rá szükség, nem is lenne.

Egyébként pont ez lesz az egyik előnye, hogy minden benne lesz a kódban. Ha valaki csak kódot akar használni, az sem gond, mert tud. Ha meg valaki csak “kattingatós felületet”, akkor megint csak tudja használni és közben elkészül a kód.
Egyébként szerintem tök jó, hogy baromi egyszerűen lehet létrehozni alap projekteket, olyan működéssel amit általában elvár az ember. De gyakran találkoztam olyannal, hogy sok apró változást kértek UI-ban a gyárihoz képest és akkor is rémálom volt azzal a pár apró pixellel arrébb mozgatni valamit. Ez itt most hatványozottabban nehéz lesz.
Mindenesetre én várom.