{"id":4259,"date":"2020-01-30T20:22:32","date_gmt":"2020-01-30T20:22:32","guid":{"rendered":"https:\/\/blog.jetbrains.com\/objc\/?p=7234"},"modified":"2020-03-13T18:11:56","modified_gmt":"2020-03-13T18:11:56","slug":"appcode-2019-2-eap","status":"publish","type":"appcode","link":"https:\/\/blog.jetbrains.com\/fr\/appcode\/2020\/01\/appcode-2019-2-eap","title":{"rendered":"AppCode Starts 2020.1 EAP: Type Hierarchy in Swift, Documentation Comments Generation, New Code Assistance Actions, and More!"},"content":{"rendered":"<p>Today we are starting the Early Access Program for AppCode 2020.1, and the first build is already available to download from <a href=\"https:\/\/www.jetbrains.com\/objc\/nextversion\/\" target=\"_blank\" rel=\"noopener\">our site<\/a>. <\/p>\n<p><img decoding=\"async\" alt=\"AppCode 2020.1 EAP splash\" width=\"800\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/01\/objc-blog@2x.png\"\/><br \/>\n<!--more--><\/p>\n<h2 id=\"type_hierarchy\">Type Hierarchy<\/h2>\n<p><strong>Type Hierarchy<\/strong><strong> <\/strong>(<code>\u2303H<\/code>) now works for Swift in the same way that it does for Objective-C:<\/p>\n<p><img decoding=\"async\" alt=\"Swift Type Hierarchy\" width=\"456\" data-gif-src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/01\/objc-hierarchy@2x.gif\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/01\/objc-hierarchy@2x.png\"\/><br \/>\nYour feedback on the feature is very welcome (note that there are several known issues filled as <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/OC-11220\" target=\"_blank\" rel=\"noopener\">OC-11220<\/a> subtasks).<\/p>\n<h2 id=\"code_assistance\">Code Assistance<\/h2>\n<p>This EAP brings new code assistance actions for Swift:<\/p>\n<ul>\n<li><strong>Replace <\/strong><strong><code>if<\/code><\/strong><strong> with <\/strong><strong><code>guard<\/code><\/strong> intention:<br \/>\n<img decoding=\"async\" alt=\"Replace if with guard\" width=\"510\" data-gif-src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/01\/objc-guard_if@2x.gif\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/01\/objc-guard_if@2x.png\"\/><\/li>\n<li><strong>U<\/strong><strong>nnecessary parentheses<\/strong> inspection:<br \/>\n<img decoding=\"async\" alt=\"Remove parentheses\" width=\"570\" data-gif-src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/01\/objc-remove_par@2x.gif\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/01\/objc-remove_par@2x.png\"\/><\/li>\n<li><strong>Unnecessary tuple wrap<\/strong> inspection:<br \/>\n<img decoding=\"async\" alt=\"Replace tuple\" width=\"570\" data-gif-src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/01\/objc-tuple_replace@2x.gif\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/01\/objc-tuple_replace@2x.png\"\/><\/li>\n<\/ul>\n<h2 id=\"documentation_comments\">Documentation Comments<\/h2>\n<p>You may have noticed this feature in AppCode 2019.3, though at the time it wasn\u2019t ready for the public announcement. We\u2019ve finished it\u2019s implementation for the 2020.1 EAP, and you can now generate markdown documentation in Swift simply by writing <code>\/\/\/<\/code> and pressing <code>\u23ce<\/code>:<\/p>\n<p><img decoding=\"async\" alt=\"Comments generation\" width=\"632\" data-gif-src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/01\/objc-generate_comments@2x.gif\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/01\/objc-generate_comments@2x.png\"\/><\/p>\n<p>In addition, AppCode now correctly displays markdown documentation in the <strong>Quick Documentation <\/strong>(<code>F1<\/code>) popup:<\/p>\n<p><img decoding=\"async\" alt=\"Quick Documentation\" width=\"726.5\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/01\/objc-doc@2x.png\"\/><\/p>\n<h2 id=\"jetbrains_mono\">JetBrains Mono<\/h2>\n<p><a href=\"https:\/\/www.jetbrains.com\/lp\/mono\/\" target=\"_blank\" rel=\"noopener\">JetBrains Mono<\/a> is a free and open-source font created by our company \u2013 and now it\u2019s also the default font for all JetBrains IDEs!<\/p>\n<p>That\u2019s it for now. If you want to find out more, the full release notes are available <a href=\"https:\/\/confluence.jetbrains.com\/display\/OBJC\/AppCode+2020.1\" target=\"_blank\" rel=\"noopener\">here<\/a>.<\/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 2020.1 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":4253,"comment_status":"open","ping_status":"open","template":"","categories":[89],"tags":[782,178,657,600,756,741,91,445],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/appcode\/4259"}],"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=4259"}],"version-history":[{"count":0,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/appcode\/4259\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/media\/4253"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/media?parent=4259"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/categories?post=4259"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/tags?post=4259"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/cross-post-tag?post=4259"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}