{"id":307784,"date":"2022-12-14T19:00:52","date_gmt":"2022-12-14T18:00:52","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=appcode&#038;p=307784"},"modified":"2022-12-14T19:00:54","modified_gmt":"2022-12-14T18:00:54","slug":"appcode-2022-3-release-and-end-of-sales-and-support","status":"publish","type":"appcode","link":"https:\/\/blog.jetbrains.com\/pt-br\/appcode\/2022\/12\/appcode-2022-3-release-and-end-of-sales-and-support\/","title":{"rendered":"Lan\u00e7amento do AppCode 2022.3 e fim das vendas e suporte"},"content":{"rendered":"\n<p>Ol\u00e1!<\/p>\n\n\n\n<p>O AppCode 2022.3 j\u00e1 est\u00e1 dispon\u00edvel! Ele chega compat\u00edvel com o macOS 13 e o Xcode 14.2, traz mais recursos de refatora\u00e7\u00e3o no Swift, permite inje\u00e7\u00f5es de linguagens e oferece uma nova abordagem \u00e0 sincroniza\u00e7\u00e3o de configura\u00e7\u00f5es.<\/p>\n\n\n\n<p><em>Com o lan\u00e7amento da vers\u00e3o 2022.3, estamos tirando o produto de linha. A partir de 14 de dezembro de 2022, n\u00e3o venderemos mais novas assinaturas do AppCode, nem renovaremos as j\u00e1 existentes. Todas as assinaturas ativas ganhar\u00e3o um fallback da vers\u00e3o 2022.3.<\/em><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1600\" height=\"800\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/12\/Release_blog_image_800x400_AppCode-2x-1-1.png\" alt=\"\" class=\"wp-image-307787\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"sunsetting_appcode\">Descontinua\u00e7\u00e3o do AppCode<\/h2>\n\n\n\n<p>Desde o lan\u00e7amento do <a href=\"https:\/\/blog.jetbrains.com\/appcode\/2011\/10\/appcode-1-0-a-new-ide-for-objective-c-is-generally-available\/\">AppCode 1.0<\/a>, 11 anos atr\u00e1s, temos usado nossa expertise para deixar mais agrad\u00e1vel a programa\u00e7\u00e3o para iOS\/macOS. Tivemos muitas realiza\u00e7\u00f5es, incluindo um suporte de primeira ao C++ (do qual nasceu o <a href=\"https:\/\/www.jetbrains.com\/pt-br\/clion\/\" target=\"_blank\" rel=\"noopener\">CLion<\/a>, nosso IDE multiplataforma para C\/C++), um <a href=\"https:\/\/blog.jetbrains.com\/appcode\/2014\/06\/appcode-3-0-1-update-xcode-6-and-basic-swift-support\/\">lan\u00e7amento<\/a> extremamente r\u00e1pido do suporte inicial \u00e0 nova linguagem Swift e, finalmente, a tecnologia do <a href=\"https:\/\/blog.jetbrains.com\/pt-br\/kotlin\/2022\/10\/kmm-beta\/\">Kotlin Multiplatform Mobile<\/a>, que combina nossa paix\u00e3o pelo Kotlin com nosso conhecimento de tecnologias m\u00f3veis.<\/p>\n\n\n\n<p>Embora tenha havido algum crescimento na ado\u00e7\u00e3o do AppCode, n\u00e3o atingimos a parcela do mercado que esper\u00e1vamos. Acreditamos que chegou o momento de tirarmos o produto de linha e concentrarmos nossos esfor\u00e7os em outras dire\u00e7\u00f5es.<\/p>\n\n\n\n<p>At\u00e9 31 de dezembro de 2023, continuaremos a dar suporte t\u00e9cnico e a lan\u00e7ar atualiza\u00e7\u00f5es para resolver especificamente problemas de compatibilidade com o Xcode 14, al\u00e9m de atualiza\u00e7\u00f5es cr\u00edticas de seguran\u00e7a, conforme a necessidade. O escopo das atualiza\u00e7\u00f5es ser\u00e1 limitado a estas duas \u00e1reas.<\/p>\n\n\n\n<p><em>Observe que a Kotlin Multiplatform Mobile <\/em><em>\u00e9 independente<\/em><em> da descontinua\u00e7\u00e3o do AppCode e novos investimentos naquela ferramenta continuar\u00e3o a ser feitos. Para mais informa\u00e7\u00f5es e atualiza\u00e7\u00f5es, confira o <\/em><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/\"><em>blog do Kotlin<\/em><\/a><em>.<\/em><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"extending_the_fallback\">Extens\u00e3o do fallback<\/h3>\n\n\n\n<p>Normalmente, quando \u00e9 concedida uma licen\u00e7a de fallback, o usu\u00e1rio ganha uma licen\u00e7a para a vers\u00e3o do produto com a qual ele iniciou sua assinatura. Mas como gesto de gratid\u00e3o, desta vez estamos fazendo diferente. Aqueles que receberem licen\u00e7as de fallback v\u00e3o receb\u00ea-la para a vers\u00e3o que estiver dispon\u00edvel quando vencerem suas assinaturas.<\/p>\n\n\n\n<p>Por \u00faltimo, mas n\u00e3o menos importante, gostar\u00edamos de agradecer a voc\u00eas pelo seu apoio e por ajudar o AppCode a evoluir ao longo dos anos!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"appcode_update\">Atualiza\u00e7\u00e3o 2022.3 do AppCode<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"compatibility\">Compatibilidade<\/h3>\n\n\n\n<p>Nesta vers\u00e3o, corrigimos uma exce\u00e7\u00e3o que ocorria na abertura do projeto, desativamos o aviso de compatibilidade com o macOS e corrigimos um problema ao criar uma build para um dispositivo na integra\u00e7\u00e3o com o Reveal no macOS 13. Com essas atualiza\u00e7\u00f5es, agora o AppCode 2022.3 \u00e9 compat\u00edvel com o macOS 13 e o Xcode 14.1.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"better_swift_refactoring_capabilities\">Melhores recursos de refatora\u00e7\u00e3o no Swift<\/h3>\n\n\n\n<p>Temos nos empenhado em tornar melhor a refatora\u00e7\u00e3o no Swift. Nesta vers\u00e3o, ampliamos a lista de capacidades e melhoramos as j\u00e1 existentes:<\/p>\n\n\n\n<ul><li>Foi adicionada uma nova refatora\u00e7\u00e3o <em>Inline function<\/em> (\u2325\u2318N). O usu\u00e1rio pode especificar se todas as invoca\u00e7\u00f5es ou apenas a selecionada devem ser substitutu\u00eddas, e tamb\u00e9m se a fun\u00e7\u00e3o tornada in-line deve ser removida:<br><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/12\/inline_swift.png\" alt=\"Inline Function in Swift\" width=\"600\" data-gif-src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/12\/inline_swift.gif\"><br>Ao fazer o inlining, o IDE verifica a acessibilidade dos s\u00edmbolos usados na fun\u00e7\u00e3o tornada in-line, processa adequadamente os argumentos da fun\u00e7\u00e3o <code>inout<\/code>, faz o inlining preciso de chamadas impl\u00edcitas a m\u00e9todos est\u00e1ticos e muito mais.<\/li><li>Ao criar uma propriedade a partir do uso ou de sua extra\u00e7\u00e3o, o AppCode agora sugere a possibilidade de escolher entre declara\u00e7\u00f5es de propriedade <code>var<\/code> e <code>let<\/code>.<\/li><li>Extrair um m\u00e9todo a partir de um <code>static subscript<\/code> agora gera um m\u00e9todo <code>static<\/code>. Agora o AppCode tamb\u00e9m leva em conta o tempo de vida da vari\u00e1vel e n\u00e3o ignora mais o modificador <code>mutating<\/code>.<\/li><li>Ao se extrair uma conformidade de protocolo para uma <code>extens\u00e3o<\/code>, os coment\u00e1rios da documenta\u00e7\u00e3o n\u00e3o s\u00e3o mais perdidos.<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"enhanced_completion_for_initializers_and_deinitializers\">Complementa\u00e7\u00e3o melhorada de inicializadores e desinicializadores<\/h3>\n\n\n\n<p>A complementa\u00e7\u00e3o de c\u00f3digo no Swift recebeu v\u00e1rias melhorias:<\/p>\n\n\n\n<ul><li>Agora o preenchimento inteligente ignora <code>@autoclosure<\/code> para permitir a designa\u00e7\u00e3o ao montar uma lista de op\u00e7\u00f5es.<\/li><li>Ao completar palavras-chave <code>init<\/code> e <code>deinit<\/code>, os espa\u00e7os redundantes s\u00e3o removidos e, no lugar deles, as chaves e os par\u00eanteses necess\u00e1rios s\u00e3o acrescentados depois das palavras-chave.<\/li><li>O AppCode 2022.3 tamb\u00e9m habilita a a\u00e7\u00e3o <em>complete statement<\/em> de inicializadores e desinicializadores.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/12\/complete_init.png\" alt=\"Complete statement\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"intention_previews\">Pr\u00e9-visualiza\u00e7\u00e3o de inten\u00e7\u00f5es<\/h3>\n\n\n\n<p>Se voc\u00ea n\u00e3o estiver seguro quanto a uma corre\u00e7\u00e3o r\u00e1pida ou quiser apenas ter uma pr\u00e9via do que exatamente vai mudar, abra o pop-up da <em>Documenta\u00e7\u00e3o R\u00e1pida<\/em> (<code>F1<\/code>) de uma corre\u00e7\u00e3o r\u00e1pida selecionada no menu <code>\u2325Enter<\/code>. Isso ativar\u00e1 a pr\u00e9-visualiza\u00e7\u00e3o de inten\u00e7\u00f5es e voc\u00ea poder\u00e1 ver como o c\u00f3digo ser\u00e1 atualizado se a corre\u00e7\u00e3o for aplicada.<br><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/12\/preview-1.png\" alt=\"Pr\u00e9-visualiza\u00e7\u00e3o de inten\u00e7\u00f5es\" width=\"600\"><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"injected_languages\">Linguagens injetadas<\/h3>\n\n\n\n<p>Em literais de string no Swift que contenham strings de SQL, c\u00f3digo em HTML, express\u00f5es regulares ou outros exemplos de outras linguagens, voc\u00ea pode injetar essas linguagens na string atrav\u00e9s do menu <code>\u2325Enter<\/code>. Fazer isso real\u00e7ar\u00e1 o c\u00f3digo de forma precisa, com base na linguagem escolhida e nas inten\u00e7\u00f5es espec\u00edficas daquela linguagem, e criar\u00e1 uma se\u00e7\u00e3o dedicada do editor para editar aquele fragmento espec\u00edfico de c\u00f3digo.<br><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/12\/injections.png\" alt=\"Inje\u00e7\u00f5es de linguagens\" width=\"600\" data-gif-src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/12\/injections.gif\"><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"updates_to_uml_diagrams\">Atualiza\u00e7\u00f5es a diagramas UML<\/h3>\n\n\n\n<p>O AppCode 2022.3 aperfei\u00e7oou os diagramas UML para classes Swift e Objective-C:<\/p>\n\n\n\n<ul><li>Voc\u00ea pode arrastar itens a partir de arquivos na <em>Visualiza\u00e7\u00e3o de Projeto<\/em> para o diagrama.<\/li><li>Voc\u00ea pode filtrar n\u00f3s do diagrama por escopo, como, por exemplo, todos os arquivos alterados, todos os arquivos abertos ou os arquivos de c\u00f3digo-fonte do projeto.<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"new_solution_for_settings_synchronization\">Nova solu\u00e7\u00e3o para a sincroniza\u00e7\u00e3o de configura\u00e7\u00f5es<\/h3>\n\n\n\n<p>Est\u00e1 dispon\u00edvel uma nova solu\u00e7\u00e3o para sincronizar configura\u00e7\u00f5es entre diferentes instala\u00e7\u00f5es do produto, ou mesmo entre diferentes IDEs baseados no IntelliJ. Essa solu\u00e7\u00e3o armazena as configura\u00e7\u00f5es na nuvem e \u00e9 capaz de sincronizar todas as configura\u00e7\u00f5es compartilh\u00e1veis da plataforma, plug-ins integrados e plug-ins de terceiros. <a href=\"https:\/\/blog.jetbrains.com\/appcode\/2022\/10\/appcode-2022-3-eap-new-settings-sync-solution\/#new_solution_for_synchronizing_settings\">Saiba mais<\/a> e habilite essa solu\u00e7\u00e3o em <em>Preferences | Settings Sync | Enable Settings Sync<\/em>.<\/p>\n\n\n\n<p><a class=\"jb-download-button\" href=\"https:\/\/www.jetbrains.com\/pt-br\/objc\/download\/\" target=\"_blank\" rel=\"noopener\"><i class=\"download-icon\"><\/i>Baixar AppCode<\/a><\/p>\n\n\n\n<p><em>A Equipe do AppCode<\/em><br><em>JetBrains<\/em><br><em>The Drive to Develop<\/em><\/p>\n\n\n\n<p><em>Artigo original em ingl\u00eas por:<\/em><\/p>\n\n\n    <div class=\"about-author \">\n        <div class=\"about-author__box\">\n            <div class=\"row\">\n                <div class=\"about-author__box-img\">\n                    <img decoding=\"async\" src=\"https:\/\/secure.gravatar.com\/avatar\/?s=200&#038;r=g\" width=\"200\" height=\"200\" alt=\"\" loading=\"lazy\"  class=\"avatar avatar-200 wp-user-avatar wp-user-avatar-200 photo avatar-default\">\n                <\/div>\n                <div class=\"about-author__box-text\">\n                                                        <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n","protected":false},"author":1086,"featured_media":307799,"comment_status":"closed","ping_status":"closed","template":"","categories":[89,907],"tags":[7086,195,7135,7165],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/appcode\/307784"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/appcode"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/types\/appcode"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/users\/1086"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/comments?post=307784"}],"version-history":[{"count":7,"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/appcode\/307784\/revisions"}],"predecessor-version":[{"id":307828,"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/appcode\/307784\/revisions\/307828"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/media\/307799"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/media?parent=307784"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/categories?post=307784"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/tags?post=307784"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/cross-post-tag?post=307784"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}