Bonjour Ă tous!
Il y a une semaine, nous avons publié AppCode 2019.1 - parlons des changements. Sous la coupe un tas de nouveautés, utiles, corrigées et complétées.

Rapide
Swift 5
Toutes les nouvelles fonctionnalités de Swift 5 fonctionnent correctement dans AppCode 2019.1:
- SE-0200 Littéraux de texte brut
- SE-0213 Initialisation littérale par coercition
- SE-0216 Callables dynamiques
- SE-0224 Prise en charge de l'opérateur «moins de» dans les conditions de compilation
- SE-0227 Chemin de clé d'identité
- SE-0228 Fix
ExpressibleByStringInterpolation
- SE-0230 Aplatir les options imbriquées résultant d'un
try?
Renommer
Il y avait un problÚme avec le changement de nom des méthodes surchargées et des méthodes de la classe parente - mais maintenant cela n'existe plus.
Navigation de définition
Il semblerait que cela pourrait ĂȘtre plus simple et plus Ă©lĂ©mentaire pour le passage Ă la dĂ©finition d'une mĂ©thode ou d'une classe? Action standard et familiĂšre.
Et tout cela est vrai dans Objective-C: le nom du type est sĂ©parĂ© lors de l'initialisation de l'objet, la mĂ©thode d'initialisation elle-mĂȘme est distincte. Par consĂ©quent, si le curseur se trouve sur le nom du type, nous passons Ă la dĂ©finition du type, s'il est sur l'initialiseur, Ă la dĂ©finition de l'initialiseur. Mais dans Swift, les choses se compliquent. L'initialiseur a fusionnĂ© avec le nom du type ensemble, et si nous reproduisons le comportement de Xcode, nous perdons la possibilitĂ© de basculer vers l'initialiseur. Si nous laissons le comportement d'AppCode 2018.3.x, nous rompons l'habitude de l'utilisateur («comme dans Xcode», c'est-Ă -dire la transition non pas Ă la dĂ©finition d'initialisation, mais Ă la dĂ©finition de type). Pour des raisons Ă©videntes, les utilisateurs ne l'aiment pas.
En conséquence, nous avons développé une solution intermédiaire: aprÚs tout, l'expression qui initialise l'objet dans Swift se compose toujours de deux parties. Tout ce qui est entre parenthÚses est un nom de type et tout ce qui est à l'intérieur est une signature d'initialisation. Par conséquent, si le curseur se trouve sur le nom du type, nous passons à la définition du type, si à l'intérieur des parenthÚses - à la définition de l'initialiseur:

Les deux cas d'utilisation sont enregistrés, tout le monde est content.
Déplacer des expressions
Pendant que les utilisateurs Xcode sĂ©lectionnent avec la souris et copient-collent, les utilisateurs AppCode placent le curseur sur l'expression et la dĂ©placent complĂštement avec un lĂ©ger clic â§ââ
/ â
:

Fonctionne pour les boucles, fonctions, méthodes, classes, conditions, en général, pour presque tout.
Littéraux multilignes
Comment transformer un littĂ©ral monoligne en multiligne? Dans AppCode, cliquez simplement sur â
:

Rétroéclairage, auto-complétion, analyse de code et tout-tout
Plus nous construisons correctement l'arborescence de symboles, qui est utilisĂ©e pour la mise en Ă©vidence, l'analyse de code, la navigation et d'autres fonctions IDE (mĂȘme pour afficher des variables dans le dĂ©bogueur), mieux et plus correctement l'AppCode fonctionnera. Dans cette version, nous avons rĂ©solu plusieurs problĂšmes fondamentaux qui ont gĂąchĂ© la vie des utilisateurs:
- Nous avons commencé à créer des symboles de bibliothÚque pour les simulateurs et les appareils. Auparavant, ils ne construisaient que pour le simulateur.
- Cela fait, ils ont commencé à déterminer correctement la plate-forme actuelle (simulateur / appareil) et à transférer correctement son annotateur de clang à Objective-C et SourceKit à Swift. Pourquoi est-ce important? Par exemple, SourceKit n'affichera pas les erreurs et les avertissements s'il est incorrect pour lui de passer le dossier avec les produits d'assemblage dans les arguments. Ce problÚme devrait disparaßtre.
- Nous avons commencé à traiter correctement DerivedSources et toutes les sources générées dans ce dossier (Core Data, Intents).
Objective-C / C / C ++
Des collÚgues de CLion ont ajouté des styles de dénomination de construction de code pour C / C ++, et nous les avons également obtenus pour Objective-C ( Preferences | Editor | Code Style | C/C++/Objective-C | Naming Convention)
:

Lancement et débogage
AppCode est dĂ©sormais capable de rejoindre des processus en cours d'exĂ©cution non seulement sur le simulateur, mais Ă©galement sur l'appareil ( â§âA
â Attach to process
):

Ajout de la possibilité de sélectionner la langue et la région de l'application dans les paramÚtres de configuration de lancement:

Run to Cursor peut ĂȘtre appelĂ© non seulement via â„F9
, mais aussi en cliquant sur le numéro de ligne dans l'éditeur:

Le recalcul des variables pendant le dĂ©bogage peut dĂ©sormais ĂȘtre dĂ©sactivĂ© Ă l'aide de l'action Muet Variables dans le menu contextuel:

ThĂšmes pour l'IDE
Un lecteur attentif a déjà remarqué que toutes les captures d'écran de la publication ont été réalisées en utilisant le nouveau thÚme Dark Purple :

Les thĂšmes IDE peuvent maintenant ĂȘtre créés par vous-mĂȘme , donc en plus de plusieurs thĂšmes créés par nos soins, vous pouvez dĂ©jĂ trouver plusieurs options de conception personnalisĂ©es dans le rĂ©fĂ©rentiel de plugins . Et jusqu'au 3 mai, vous pouvez non seulement crĂ©er votre propre thĂšme, mais aussi participer Ă un concours rĂ©cemment annoncĂ© par nous.
Liste des extraits de code récemment consultés / modifiés
Il existe plusieurs étapes utiles pour naviguer vers des emplacements récemment ouverts ou modifiés dans votre code:
- Fichiers récents (
âE
) - Commutateur (
ââ„
) - Aller au dernier emplacement de modification (
â§ââ«
)
Le passage à la derniÚre section de code modifiée est généralement difficile à surestimer, en particulier lors de la modification d'un fichier volumineux.
Maintenant, il y a aussi une liste des lieux rĂ©cemment consultĂ©s / modifiĂ©s des emplacements rĂ©cents ( â§âE
):

Ceci est la version. Ăcrivez toutes les questions, souhaits et mĂȘme les rapports de bugs ici dans les commentaires - nous serons heureux de rĂ©pondre!
Ăquipe AppCode