{"id":271420,"date":"2022-08-03T15:20:43","date_gmt":"2022-08-03T14:20:43","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=appcode&#038;p=271420"},"modified":"2022-08-09T16:42:47","modified_gmt":"2022-08-09T15:42:47","slug":"appcode-2022-2-released","status":"publish","type":"appcode","link":"https:\/\/blog.jetbrains.com\/fr\/appcode\/2022\/08\/appcode-2022-2-released","title":{"rendered":"AppCode 2022.2 Released"},"content":{"rendered":"<p>Today we are happy to announce the <a href=\"https:\/\/www.jetbrains.com\/objc\/download\" target=\"_blank\" rel=\"noopener\">AppCode 2022.2 release<\/a>!<\/p>\n<p>The new version helps you analyze the structure of your application by generating UML class diagrams for Objective-C and Swift. It also improves code documentation, generation, and formatting, and is aligned with the latest Xcode versions and new Swift language features. The <em>Kotlin Multiplatform Mobile<\/em> plugin for AppCode expands the variety of supported projects to help you develop applications for Android and iOS more productively.<\/p>\n<p><a href=\"https:\/\/www.jetbrains.com\/objc\/download\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" alt=\"AppCode 2022.2 released\" width=\"800\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/08\/Release_blog_image_800x400_AppCode-2x.png\"><\/a><\/p>\n<p>In this release:<\/p>\n<ul>\n<li><a href=\"https:\/\/blog.jetbrains.com\/appcode\/2022\/08\/appcode-2022-2-released\/#language_support\">Swift and Objective-C language support improvements<\/a><\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/appcode\/2022\/08\/appcode-2022-2-released\/#uml_class_diagrams\">UML class diagrams for Swift and Objective-C<\/a><\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/appcode\/2022\/08\/appcode-2022-2-released\/#code_documentation\">Enhanced code documentation<\/a><\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/appcode\/2022\/08\/appcode-2022-2-released\/#kmm\">Updates to the Kotlin Multiplatform Mobile plugin<\/a><\/li>\n<\/ul>\n<h2 id=\"language_support\">Language support<\/h2>\n<p>Swift support in AppCode stays aligned with the Swift language evolution. This often requires updates to both Swift and Objective-C support. This is the case with the <strong>concurrency interoperability with Objective-C<\/strong>, a set of features added in Swift 5.5. You can learn more about the language feature <a href=\"https:\/\/github.com\/apple\/swift-evolution\/blob\/main\/proposals\/0297-concurrency-objc.md\" target=\"_blank\" rel=\"noopener\">here on GitHub<\/a>. From the AppCode user\u2019s perspective, the changes are:<\/p>\n<ul>\n<li>Code resolve in Swift for Objective-C asynchronous functions now works correctly:<img decoding=\"async\" alt=\"Swift and Objective-C concurrency\" width=\"600\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/08\/concurrency.png\"><\/li>\n<li>Support is now available for actor interoperability with Objective-C.<\/li>\n<li>Various <a href=\"https:\/\/github.com\/apple\/swift-evolution\/blob\/main\/proposals\/0297-concurrency-objc.md#additional-objective-c-attributes\" target=\"_blank\" rel=\"noopener\">Objective-C attributes<\/a> like <code>_Nullable_result<\/code> and <code>__attribute__((swift_async_error(...)))<\/code> are now handled correctly.<\/li>\n<\/ul>\n<p>The <a href=\"https:\/\/github.com\/apple\/swift-evolution\/blob\/main\/proposals\/0335-existential-any.md\" target=\"_blank\" rel=\"noopener\">Keyword <\/a><a href=\"https:\/\/github.com\/apple\/swift-evolution\/blob\/main\/proposals\/0335-existential-any.md\" target=\"_blank\" rel=\"noopener\"><code>any<\/code><\/a><a href=\"https:\/\/github.com\/apple\/swift-evolution\/blob\/main\/proposals\/0335-existential-any.md\" target=\"_blank\" rel=\"noopener\"> for existential types<\/a> from Swift 5.6 is now supported in AppCode in code resolve and type checking, code completion and generation, and in code formatting:<br \/>\n<img decoding=\"async\" alt=\"Existential Any\" width=\"600\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/08\/any_support.png\"><\/p>\n<p>AppCode 2022.2 enhances module handling by fixing issues with code resolve and introducing support for several modules in the <code>extern<\/code> module map.<\/p>\n<p>Swift <code>actors<\/code> support was also improved in this version:<\/p>\n<ul>\n<li>AppCode 2022.2 can generate initializers for Swift <code>actors<\/code>:<img decoding=\"async\" alt=\"Initializers for Swift actors\" width=\"600\" data-gif-src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/08\/ac_generate_initializer_actor.gif\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/08\/ac_generate_initializer_actor.png\"><\/li>\n<li>Actor-isolated properties are no longer suggested when auto-generating <code>equals<\/code> and <code>hash<\/code> in an <code>actor<\/code>\u2019s extension.<\/li>\n<\/ul>\n<h2 id=\"uml_class_diagrams\">UML class diagrams<\/h2>\n<p>AppCode can now generate and show you UML diagrams for the classes and methods in your application. The class diagrams are available for Swift and Objective-C classes. They help you analyze the structure of your application by showing the types and their connections, methods, and fields.<br \/>\n<img decoding=\"async\" alt=\"Open UML diagram\" width=\"950\" data-gif-src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/08\/diagram_open.gif\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/08\/diagram_open.png\"><\/p>\n<p>Open diagrams, filter by visibility, and show categories (like Methods, Properties, Nested Types, etc.) by using the diagram\u2019s toolbar, or use <code>\u2318F12<\/code> to open the list of diagram elements and navigate between them:<br \/>\n<img decoding=\"async\" alt=\"Navigate through diagrams\" width=\"600\" data-gif-src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/08\/uml.gif\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/08\/uml.png\"><\/p>\n<p>Check out our <a href=\"https:\/\/www.jetbrains.com\/help\/objc\/2022.2\/class-diagram.html\" target=\"_blank\" rel=\"noopener\">online documentation<\/a> for more details on the UML class diagrams in AppCode.<\/p>\n<h2 id=\"code_documentation\">Code documentation<\/h2>\n<p>AppCode comes with a special <a href=\"https:\/\/www.jetbrains.com\/help\/objc\/2022.2\/reader-mode.html\" target=\"_blank\" rel=\"noopener\">reader mode<\/a> which helps you see the comments in the code as regular text when reading a file. AppCode 2022.2 now applies basic syntax highlighting when showing documentation comments in the <em>Quick Documentation<\/em> popup or in reader mode:<br \/>\n<img decoding=\"async\" alt=\"Highlighting code in code documentation\" width=\"600\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/08\/highlighting_code_in_doc.png\"><\/p>\n<p>In this release, we also fixed many issues in the code documentation, like incorrect formatting, wrongly ordered content, loss of data, redundant spaces, and empty lines.<\/p>\n<h2 id=\"kmm\">Kotlin Multiplatform Mobile plugin<\/h2>\n<p>The <a href=\"https:\/\/plugins.jetbrains.com\/plugin\/17098-kotlin-multiplatform-mobile-for-appcode\/\" target=\"_blank\" rel=\"noopener\">Kotlin Multiplatform Mobile (KMM) plugin for AppCode<\/a> helps you develop applications for Android and iOS using the unified Gradle project model. The new update expands the variety of supported projects.<\/p>\n<ul>\n<li>In this version, projects with the KMM framework attached via the <code>:&lt;kmm_library_name&gt;:embedAndSignAppleFrameworkForXcode<\/code> Gradle task are supported. This will make the cross-resolve from Swift to Kotlin available for the linked KMM libraries.<\/li>\n<li>Multi-window applications are now supported in the Apple gradle plugin.<\/li>\n<li>Applications for iPad devices configured via the target&#8217;s build settings in the Apple gradle plugin are now supported.<\/li>\n<li>Device orientation is now supported in the Apple gradle plugin.<\/li>\n<\/ul>\n<p><img decoding=\"async\" alt=\"KMM plugin\" width=\"600\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/08\/kmm_gradle.png\"><\/p>\n<p>Explore all of the new features in detail on <a href=\"https:\/\/www.jetbrains.com\/objc\/whatsnew\/\" target=\"_blank\" rel=\"noopener\">our website<\/a> and start your free 30-day evaluation to see them in action.<\/p>\n<p align=\"center\"><a class=\"jb-download-button\" href=\"https:\/\/www.jetbrains.com\/objc\/download\/\" target=\"_blank\" rel=\"noopener\"><i class=\"download-icon\"><\/i>Download AppCode<\/a><\/p>\n<p><em>Your AppCode team<\/em><br \/>\n<em>JetBrains<\/em><br \/>\n<em>The Drive to Develop<\/em><\/p>\n","protected":false},"author":266,"featured_media":271284,"comment_status":"closed","ping_status":"closed","template":"","categories":[89,907],"tags":[6978,6939,657,6294,91,6988],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/appcode\/271420"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/appcode"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/types\/appcode"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/users\/266"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/comments?post=271420"}],"version-history":[{"count":8,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/appcode\/271420\/revisions"}],"predecessor-version":[{"id":271694,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/appcode\/271420\/revisions\/271694"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/media\/271284"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/media?parent=271420"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/categories?post=271420"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/tags?post=271420"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/cross-post-tag?post=271420"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}