Apple brengt Xcode 5.1 uit, waarmee verschillende problemen worden opgelost en een groot aantal nieuwe functies worden geïmplementeerd

  Xcode is het programma dat alle tools bevat die een applicatieontwikkelaar nodig heeft om een ​​applicatie te ontwikkelen en te lanceren App Store, en tijdens deze avond heeft Apple het bijgewerkt. Versie 5.1a Xcode komt mee iOS 7.1, waardoor ontwikkelaars hun applicaties compatibel kunnen maken met de nieuwe versie van het besturingssysteem. Xcode 5.1 is uitgebracht met het idee om een ​​groot aantal problemen van de vorige versie op te lossen, en via de onderstaande changelog kun je precies ontdekken wat beter zal werken of wat je nieuw zult vinden.

Nieuwe mogelijkheden

Debugging

  • Quick Look kan worden geïmplementeerd voor door de ontwikkelaar gedefinieerde klassen. Wanneer een exemplaar van een aangepaste klasse wordt bekeken met Quick Look in de weergave van debuggervariabelen of een gegevenstype, presenteert de debugger deze met behulp van een methode met de naam -debugQuickLookObject gedefinieerd in de klassenimplementatie. Voor meer informatie over het gebruik van deze mogelijkheid, zie Snel zoeken naar aangepaste typen in de Xcode Debugger. (12723736)
  • Logboekbreekpuntacties drukken nu de logische waarde van expressies af, bijvoorbeeld een logboekbreekpuntactie zoals "myString = @myString@" drukt nu de waarde af van myString, in plaats van de pointerwaarde. (13211695) 

Gebruikersinterfaces bewerken

  • Interface Builder-documenten kunnen specifieke informatie bevatten over nieuwe functies die ze gebruiken en de besturingssysteemversies die ze nodig hebben, waardoor eerdere versies van Xcode betere waarschuwingsberichten kunnen weergeven wanneer ze dergelijke documenten proberen te openen. (7659982)
  • Het bouwen van interfaces in Interface Builder met behulp van automatische lay-out biedt de volledige reeks mogelijke typen beperkingen: beeldverhoudingen, proportionele afmetingen en posities, uitlijningen tussen attributen en een nieuwe beperkingsinspecteur met functies voor het bewerken van bijna alle eigenschappen van een beperking.
  • De Interface Builder-constraint Attributen-inspecteur toont de items en attributen van een beperking en maakt het bewerken van de attributen mogelijk. Deze functie maakt het mogelijk om cross-attribuutbeperkingen te creëren, zoals view1.centerY = view2.bottom. (13739009)
  • U kunt Interface Builder gebruiken om de relatie van elk type beperking te bewerken, inclusief uitlijningsbeperkingen (bijvoorbeeld view1.leading <= view2.leading) en beperkingen van gelijke grootte (bijvoorbeeld view1.width >= view2.width). (14721954)
  • U kunt beperkingen voor de hoogte-breedteverhouding en proportionele afmetingen instellen en de vermenigvuldiger van beperkingen bewerken in Interface Builder. De vermenigvuldiger kan een decimaal getal zijn (bijvoorbeeld 0.5), een breuk (bijvoorbeeld 1/2), of een beeldverhouding (bijvoorbeeld 1:2). (11935843)
  • Beperkingen die in Interface Builder aan dubbelzinnige weergaven zijn gekoppeld, worden alleen oranje weergegeven op de as met dubbelzinnigheid. Dit maakt het sneller om een ​​potentieel probleem op het canvas te identificeren. (15114120)
  • Op het canvas van Interface Builder worden nu indien nodig overlay-scrollers weergegeven, gebaseerd op de instelling 'Scrollbalk weergeven' in het paneel Algemeen in Systeemvoorkeuren. (10069033)
  • De Interface Builder-inspecteur biedt nu ondersteuning voor:
    • NSTableView - floatsGroupRows eigendom (9617000)
    • UISegmentedControl - apportionsSegmentWidthsByContent eigendom (9950528)
    • UITableView - sectionIndexBackgroundColor eigendom (14776025)
    • Knoptype "Detail" instellen voor prototype UITableViewCell - editingAccessoryType eigendom (15039987)

Instrumenten en symboliek

  • Instrumenten kunnen symbolen nu veel betrouwbaarder vinden. Als symbolen niet automatisch verschijnen, probeer dan het volgende: De instruments opdrachtregelprogramma ondersteunt nu het opgeven van de simulator-SDK en het apparaattype met behulp van de -w vlag Om een ​​lijst met de ondersteunde simulatorconfiguraties en aangesloten apparaten te zien, voert u uit instruments -s devices in een Terminal-venster. (14996865)
    • Wanneer Spotlight-indexering is uitgeschakeld voor van Xcode afgeleide gegevens, zoals bij gebruik van /tmp, voeg een globale lijst toe met extra zoekpaden die zijn geconfigureerd in de Instrumentenvoorkeuren.
    • Het contextmenu voor een adres bevat nu de optie "Symboliceren met DSYM" om een ​​specifiek symboolbestand toe te voegen.
    • Gebruik de opdracht Bestandsmenu Symbolen om een ​​meer gedetailleerde lijst te zien van de status van individuele uitvoerbare bestanden en bibliotheken.
      • Groene lichten geven de aanwezigheid van symbolen en broninformatie aan.
      • Gele lampjes geven bibliotheken aan met enkele symbolen, maar kunnen nog steeds profiteren van het lokaliseren van een dSYM.
      • Rode lichten duiden op situaties die symboliek verhinderen. (14269449)

Gescripte installatie

  • Bij het installeren van Device SupportRun vanaf de opdrachtregel neemt Xcode.app het nieuwe opdrachtregelargument, -installComponents. Wanneer Xcode met deze optie wordt uitgevoerd vanuit een opdrachtregelscript, worden de vereiste apparaatondersteuningspakketten geïnstalleerd en vervolgens afgesloten. (15127411) 

Algemeen

  • Emoji en andere Unicode-surrogaatparen worden ondersteund in schema-instellingen en in projectbestanden. (14837623 & 13827044)

Wijzigingen

Gebouw

  • Arm64 is nu opgenomen in de instelling "Standaardarchitecturen". Xcode 5.0 introduceerde ondersteuning voor het bouwen van 64-bit iOS-applicaties, maar dit was standaard niet ingeschakeld. Om de optie in te schakelen om 64-bits te bouwen in Xcode 5.0, is een architectuurinstelling opgegeven: "Standaardarchitecturen inclusief 64-bits" (ARCHS_STANDARD_INCLUDING_64_BIT).Met de introductie van Xcode 5.1 is arm64 opgenomen in de standaard build-instelling "Standaardarchitectuur". Dit resulteert in projecten die de standaardinstelling gebruiken en automatisch bouwen voor arm64 samen met de standaard 32-bit architecturen.
  • Wanneer u voor alle architecturen bouwt, verwijdert u alle expliciete architectuurinstellingen en gebruikt u de standaardstandaardarchitectuurinstelling. Voor projecten waarvoor u eerder was aangemeld met behulp van "Standaardarchitecturen, inclusief 64-bits", schakelt u terug naar de instelling "Standaardarchitecturen".
  • Wanneer u een bestaand project voor de eerste keer opent, kan Xcode 5.1 een waarschuwing weergeven over het gebruik van de Xcode 5.0-architectuurinstelling. Als u de waarschuwing selecteert, krijgt u een workflow om de instelling te herzien.
  • Projecten die 64-bit niet kunnen ondersteunen, moeten de build-instelling voor de architectuur specifiek zo instellen dat deze geen 64-bit bevat.
  • Projecten die zijn geconfigureerd om "Standaardarchitecturen inclusief 64-bit" te gebruiken, worden geconverteerd naar "Standaardarchitecturen $(ARCHS_STANDARD).

Compiler

  • Vanaf Apple LLVM-compilerversie 5.1 (clang-502) en hoger, het optimalisatieniveau -O4 impliceert niet langer linktime-optimalisatie (LTO). Om met LTO te bouwen, gebruik expliciet de -flto optie naast de vlag voor het optimalisatieniveau. (15633276)

Testen

  • De gcov tool voor het testen van codedekking is opnieuw geïmplementeerd. De nieuwe versie maakt gebruik van de llvm-cov tool uit het LLVM-project. Het is functioneel gelijkwaardig aan de oude versie voor alle belangrijke functies. De locatie van gcov binnen Xcode is ook verplaatst, gebruik xcrun om het aan te roepen. Als u problemen tegenkomt, dien dan een bugrapport in. Voor deze release kunt u nog steeds de oude versie van gcov van GCC, die beschikbaar is als gcov-4.2. 11919694 bijgewerkt

bekende problemen

Gebruikersinterfaces bewerken

  • Aangepaste weergaven die in Interface Builder aan een stapelweergave zijn toegevoegd, kunnen vastlopen in de status 'misplaatste weergaven' (inconsistent). Als tijdelijke oplossing kunt u een tijdelijke aanduiding voor de intrinsieke grootte instellen voor de aangepaste weergave met de juiste prioriteiten voor content-hugging en compressieweerstand. (15778653)

Testen

  • Geautomatiseerde tests die in iOS Simulator worden uitgevoerd, kunnen mislukken met een soortgelijke fout als deze:Test target [test name] encountered an error (Test process exited with code -1)Probeer te herstellen door de simulator af te sluiten en opnieuw te starten. (15929053)

Xcode-server

  • Voor de functies voor continue integratie (bots) van Xcode 5.1 is OS X Server v3.1 (of een versie van OS X Server 3.1 bèta) of hoger vereist. 16225068 bijgewerkt
  • Als er oude exemplaren van Xcode op de serverhost staan, toont Xcode Server soms alle simulators. Probeer alleen simulatoren te gebruiken die geschikt zijn voor gebruik met Xcode 5.1. (15465692 en 15153869)
  • Xcode Server biedt alle apparaten of alle simulators aan, zelfs als er geen zijn die aan de criteria voor het project voldoen. Als u een ongeschikt apparaat of een ongeschikte simulator selecteert, kunt u een foutmelding krijgen die lijkt op:xcodebuild: error: No destinations were specified with the -destination flag which were valid for the specified scheme <scheme_name>.Om dit te voorkomen, geeft u alleen geldige apparaten of simulatoren op voor uw project. (15465222)
  • Wanneer u via Xcode probeert een nieuwe lokale opslagplaats op OS X Server te maken, kan Xcode soms een foutmelding weergeven die er ongeveer als volgt uitziet:xcode-select: note: no developer tools were found at '/Applications/Xcode.app', requesting install. Choose an option in the dialog to download the command line developer tools.Om dit probleem op te lossen, volgt u de aanwijzingen in het dialoogvenster dat wordt weergegeven op het OS X Server-hostsysteem. (15475078 & 15486464)
  • Soms kunt u na het upgraden naar Xcode 5.1 en OS X Server 3.1 de eerste keer dat u een server toevoegt, een fout zien die lijkt op:"<Server> is running a version of OS X Server that cannot be used with this version of Xcode."Sluit Xcode af en start deze één keer opnieuw om dit bericht te wissen. 16217715-update 

iOS-simulator

  • Er kunnen zich prestatieproblemen voordoen bij het uitvoeren van apps binnen de iOS Simulator op OS X Mavericks met een gesimuleerde besturingssysteemversie van iOS 6.1 of eerder. Een oplossing is om timer-coalescentie uit te schakelen tijdens het gebruik van de iOS 6.1 of eerdere simulator door de volgende opdracht uit te voeren in een Terminal-venster :sudo sysctl -w kern.timer.coalescing_enabled=0 (15501929)
  • iOS Simulator reageert soms niet meer op het hardwaretoetsenbord. Door de simulator af te sluiten en opnieuw te starten, wordt dit meestal gecorrigeerd. (14642684)

Algemeen

  • Wanneer u meerdere applicaties achter elkaar valideert met behulp van de Xcode Organizer, kunnen er foutieve waarschuwingen over bundel-ID's worden afgegeven. Als deze waarschuwingen optreden, sluit u Xcode af en start u deze opnieuw tussen de validaties door. 15113664 bijgewerkt
  • Uitvoerbare bestanden gemaakt door Xcode 5.1 kunnen crashen op OS X v10.5. (15852259) bijgewerkt

Opgeloste problemen

Testen

  • De XCTAssertEqual macro (voorheen STAssertEquals met OCUnit) vergelijkt scalaire waarden van verschillende typen correct zonder te casten, bijvoorbeeld int enNSInteger. Het kan niet langer niet-scalaire typen, zoals structs, ter vergelijking accepteren. (14435933)

Algemeen

  • OS X-apps waarvoor een inrichtingsprofiel nodig is, zoals apps die iCloud gebruiken, zijn nu gebouwd, worden correct ondertekend en worden gestart. (15841159)

Beëindigingen

  • OCUnit en het SenTestingKit-framework zijn verouderd en zullen worden verwijderd uit een toekomstige release van Xcode. Broncode die OCUnit gebruikt, genereert waarschuwingen tijdens het compileren in Xcode 5.1. Migreer naar XCTest met behulp van de menuopdracht "Bewerken> Refactor> Converteren naar XCTest...". .
  • Het ATS-framework is verouderd. Broncode die ATS API's gebruikt, genereert waarschuwingen tijdens het compileren. Voor versie 10.8 zal er geen functionaliteitsverlies optreden, maar er kunnen gebieden zijn waar de prestaties achteruit gaan. Vervang alle ATS-code (inclusief ATSUI) Met CoreText. ATS-functionaliteit zal in toekomstige OS X-releases worden verwijderd. Meer informatie over deze wijziging vindt u inHandleiding voor het programmeren van kernteksten.