{"id":4204,"date":"2019-09-19T19:49:29","date_gmt":"2019-09-19T19:49:29","guid":{"rendered":"https:\/\/blog.jetbrains.com\/objc\/?p=7127"},"modified":"2019-10-30T13:59:10","modified_gmt":"2019-10-30T13:59:10","slug":"appcode-2019-3-eap","status":"publish","type":"appcode","link":"https:\/\/blog.jetbrains.com\/fr\/appcode\/2019\/09\/appcode-2019-3-eap","title":{"rendered":"AppCode Starts 2019.3 EAP: New Rendering for Build Messages, New Swift Intentions, and More"},"content":{"rendered":"<p>Today we are starting the Early Access Program for AppCode 2019.3, and the first build is already available to download from <a href=\"https:\/\/jetbrains.com\/objc\/nextversion\/\" target=\"_blank\" rel=\"noopener\">our site<\/a>.<\/p>\n<p><img decoding=\"async\" alt=\"Splash\" width=\"800\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2019\/09\/objc-blog_fixed@2x.png\"\/><\/p>\n<h2 id=\"new_build_messages\">New Build Messages<\/h2>\n<p>We dedicated a lot of time improving build messages in earlier releases, but our build output parser was still affected by some performance issues. In this release cycle, we\u2019re getting the build output tree directly from Xcode toolchain and only render it in AppCode. For you, this means that:<\/p>\n<ol>\n<li>Build speed should be the same as in Xcode for regular and incremental builds.<\/li>\n<li>All the necessary information should be visible, including compiler notes.<\/li>\n<li>AppCode now shows detailed build progress:<img decoding=\"async\" alt=\"Build progress\" width=\"730\" data-gif-src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2019\/09\/objc-build_1@2x.gif\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2019\/09\/objc-build_1@2x.png\"\/><\/li>\n<li>The filtering of Build Messages is simplified: now you can see only errors and warnings by clicking the <strong>Show Problems Only<\/strong> button on the left of the toolwindow:<img decoding=\"async\" alt=\"Show Warnings Only\" width=\"730\" data-gif-src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2019\/09\/objc-warnings_only@2x.gif\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2019\/09\/objc-warnings_only@2x.png\"\/><\/li>\n<\/ol>\n<h2 id=\"intentions\">Intentions<\/h2>\n<p>We\u2019ve added several new intentions for Swift:<\/p>\n<ul>\n<li>Split \/ join variable declaration and assignment:<img decoding=\"async\" alt=\"Split\/join variable declaration and assignment\" width=\"730\" data-gif-src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2019\/09\/objc-split_join_decl@2x.gif\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2019\/09\/objc-split_join_decl@2x.png\"\/><\/li>\n<li>Split variable declarations with multiple elements:<img decoding=\"async\" alt=\"Split variable declarations with multiple elements\" width=\"730\" data-gif-src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2019\/09\/objc-multi_decl@2x.gif\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2019\/09\/objc-multi_decl@2x.png\"\/><\/li>\n<li>Split \/ join nested <code>if<\/code>\/<code>else<\/code> statements:<img decoding=\"async\" alt=\"Split\/join nested ifs\" width=\"730\" data-gif-src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2019\/09\/objc-merge_ifs@2x.gif\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2019\/09\/objc-merge_ifs@2x.png\"\/><\/li>\n<\/ul>\n<h2 id=\"code_generation\">Code Generation<\/h2>\n<p>Code generation options for Swift now have two new options: <code>Prefer<\/code><code> Void over ()<\/code> and <code>Prefer explicit return<\/code>. Find them in <code>Editor | Code Style | Swift | Code Generation | General<\/code>.<\/p>\n<p>That\u2019s it for now! <\/p>\n<p align=\"center\"><a class=\"jb-download-button\" href=\"https:\/\/www.jetbrains.com\/objc\/nextversion\/\" target=\"_blank\" rel=\"noopener\"><i class=\"download-icon\"><\/i>Download AppCode 2019.3 EAP<\/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":437,"featured_media":0,"comment_status":"open","ping_status":"open","template":"","categories":[89],"tags":[775,776,600,741,91,772],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/appcode\/4204"}],"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\/437"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/comments?post=4204"}],"version-history":[{"count":0,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/appcode\/4204\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/media?parent=4204"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/categories?post=4204"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/tags?post=4204"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/cross-post-tag?post=4204"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}