<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8445743790537577224</id><updated>2024-09-19T07:49:50.951-03:00</updated><category term="Swift"/><category term="iOS"/><category term="Arquitetura de Software"/><category term="MVC"/><category term="MVVM"/><category term="Mobile"/><category term="Xcode"/><category term="Agile"/><category term="Desenvolvimento Aplicativos"/><category term="IBInspectable"/><category term="Objective-C"/><category term="Swift 4"/><category term="TDD"/><category term="UIKit"/><category term="ibdesignable"/><category term="Apple Developer"/><category term="Array"/><category term="BDD"/><category term="Bridging-Header"/><category term="Chris Lattner"/><category term="Cocoapods"/><category term="Codesigningallowed"/><category term="Codesigningrequired"/><category term="Cursor-based Refactoring"/><category term="Dan North"/><category term="Dica"/><category term="Extreme Programming"/><category term="GitHub"/><category term="Performance"/><category term="Refactoring"/><category term="Snippet"/><category term="Software Development"/><category term="String"/><category term="Substring"/><category term="Tests"/><category term="UIColor"/><category term="UIScrollView"/><category term="UITableView"/><category term="UITextView"/><category term="UTF"/><category term="Unicode"/><category term="Viper"/><category term="Xcode 9"/><category term="compactMap"/><category term="contentInset"/><category term="contentOffset"/><category term="filter"/><category term="flatMap"/><category term="for in"/><category term="git"/><category term="map"/><category term="mark"/><category term="pragma mark"/><title type='text'>Geraldo Bastos</title><subtitle type='html'>Meu repositório para compartilhar tudo que sei/descubro ao desenvolver aplicações utilizando Swift ou Objective-C.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://geraldobastos.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8445743790537577224/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://geraldobastos.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>15</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8445743790537577224.post-2493128563846774165</id><published>2018-10-02T12:43:00.000-03:00</published><updated>2018-10-02T17:26:38.178-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Chris Lattner"/><category scheme="http://www.blogger.com/atom/ns#" term="Cursor-based Refactoring"/><category scheme="http://www.blogger.com/atom/ns#" term="iOS"/><category scheme="http://www.blogger.com/atom/ns#" term="Refactoring"/><category scheme="http://www.blogger.com/atom/ns#" term="Swift"/><category scheme="http://www.blogger.com/atom/ns#" term="UIColor"/><category scheme="http://www.blogger.com/atom/ns#" term="UIKit"/><category scheme="http://www.blogger.com/atom/ns#" term="Xcode"/><title type='text'>Tipos diferentes e com o mesmo nome, como resolver?</title><content type='html'>&lt;br&gt;
Quando trabalhamos em projetos grandes e/ou em uma equipe de desenvolvimento é muito comum encontrarmos nomes iguais para tipos diferentes. Esse cenário também pode acontecer quando utilizamos framerworks de terceiros.&lt;br&gt;
&lt;br&gt;
Vamos exemplificar o problema citado sobre nomenclaturas iguais e as três formas de resolvermos.&lt;br&gt;
&lt;br&gt;
&lt;a href=&quot;http://geraldobastos.blogspot.com/2018/10/tipos-com-mesmo-nome-como-resolver.html#more&quot;&gt;Continuar lendo »&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8445743790537577224/posts/default/2493128563846774165'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8445743790537577224/posts/default/2493128563846774165'/><link rel='alternate' type='text/html' href='http://geraldobastos.blogspot.com/2018/10/tipos-com-mesmo-nome-como-resolver.html' title='Tipos diferentes e com o mesmo nome, como resolver?'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEG47W11BYeeC67QIb0A1YGacCcizGhXE8Lvjyyfs6I9j60lsHI00LhZLjB4nt9DVXJEfeLuszkbz09iQNvEy7tqytvspnx9uKXZnHk2Am2_CqI5W6ZcoEjxqBiknRMx-pI_kHaP2v9xvG/s72-c/Cursor.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8445743790537577224.post-6151851229233613113</id><published>2018-09-15T07:03:00.000-03:00</published><updated>2018-09-15T07:03:35.508-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Array"/><category scheme="http://www.blogger.com/atom/ns#" term="compactMap"/><category scheme="http://www.blogger.com/atom/ns#" term="Desenvolvimento Aplicativos"/><category scheme="http://www.blogger.com/atom/ns#" term="filter"/><category scheme="http://www.blogger.com/atom/ns#" term="flatMap"/><category scheme="http://www.blogger.com/atom/ns#" term="for in"/><category scheme="http://www.blogger.com/atom/ns#" term="iOS"/><category scheme="http://www.blogger.com/atom/ns#" term="map"/><category scheme="http://www.blogger.com/atom/ns#" term="Performance"/><category scheme="http://www.blogger.com/atom/ns#" term="Swift"/><category scheme="http://www.blogger.com/atom/ns#" term="Swift 4"/><title type='text'>Performance com Array</title><content type='html'>Quando trabalhamos no desenvolvimento de aplicativos para dispositivos móveis, temos que ter como preocupação a perfomance de nosso algoritmo para não criarmos aplicações lentas. Algoritmos simples como percorrer uma coleção, pode impactar de forma negativa na experiência do seu app.&lt;br&gt;
&lt;br&gt;
Nesse artigo, veremos a performance para percorrermos uma lista simples utilizando diferentes formas.&lt;br&gt;
&lt;a href=&quot;http://geraldobastos.blogspot.com/2018/09/performance-com-array.html#more&quot;&gt;Continuar lendo »&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8445743790537577224/posts/default/6151851229233613113'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8445743790537577224/posts/default/6151851229233613113'/><link rel='alternate' type='text/html' href='http://geraldobastos.blogspot.com/2018/09/performance-com-array.html' title='Performance com Array'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiydv1IAsbWnHPqYEQutQWBz4w3aQGituvuFasoaKCM5MCLhouxXOCRaLvWGJXkeWb3bzHgSqmlJKTxuIp3E11kxUr_69UwDM0cR5QwWMaivGS3gTx7weRsXpBg4MMGmHtEPW37aQg-MJDq/s72-c/perfomance.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8445743790537577224.post-8398903281785213023</id><published>2018-09-13T19:33:00.001-03:00</published><updated>2018-09-13T19:53:31.333-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Apple Developer"/><category scheme="http://www.blogger.com/atom/ns#" term="Bridging-Header"/><category scheme="http://www.blogger.com/atom/ns#" term="Desenvolvimento Aplicativos"/><category scheme="http://www.blogger.com/atom/ns#" term="git"/><category scheme="http://www.blogger.com/atom/ns#" term="GitHub"/><category scheme="http://www.blogger.com/atom/ns#" term="Objective-C"/><category scheme="http://www.blogger.com/atom/ns#" term="Swift"/><category scheme="http://www.blogger.com/atom/ns#" term="Xcode"/><title type='text'>Como chamar código Objective-C usando o Swift</title><content type='html'>Existem muitas dúvidas se conseguimos combinar em um projeto iOS totalmente escrito em Swift com trechos de código em Objective-C (ObjC). Essa foi uma das primeiras dúvidas quando a Apple lançou a linguagem Swift e até hoje existe esse questionamento, visto que muitas bibliotecas/frameworks foram criadas utilizando o ObjC e até mesmo código legado.&lt;br&gt;
&lt;div&gt;
&lt;/div&gt;&lt;a href=&quot;http://geraldobastos.blogspot.com/2018/09/como-chamar-codigo-objective-c-usando-o.html#more&quot;&gt;Continuar lendo »&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8445743790537577224/posts/default/8398903281785213023'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8445743790537577224/posts/default/8398903281785213023'/><link rel='alternate' type='text/html' href='http://geraldobastos.blogspot.com/2018/09/como-chamar-codigo-objective-c-usando-o.html' title='Como chamar código Objective-C usando o Swift'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXkzgFAWuJXInmvYV6Yv00MLlv6Z9MpW-f1hJYgJJ03ICFezrmE4vSpxAYt5goGQYUrLseg1Qgnzqs_p_euxtp6VWInDrT1yQqW6n_vgniiuf6sjDN0C2yLYDt-Q0_f3mytMr-IrWeDi0s/s72-c/Captura+de+Tela+2018-09-13+a%25CC%2580s+18.38.01.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8445743790537577224.post-7328214607484711085</id><published>2018-09-09T07:49:00.001-03:00</published><updated>2018-09-13T19:32:43.656-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="String"/><category scheme="http://www.blogger.com/atom/ns#" term="Substring"/><category scheme="http://www.blogger.com/atom/ns#" term="Swift"/><category scheme="http://www.blogger.com/atom/ns#" term="Swift 4"/><category scheme="http://www.blogger.com/atom/ns#" term="Unicode"/><category scheme="http://www.blogger.com/atom/ns#" term="UTF"/><title type='text'>String e Substring</title><content type='html'>Em Swift uma String é composta por caracteres que são representados por grafemas e possuem uma representação mínima do sistema de escrita. Por exemplo quando utilizamos emojis em mensagens, eles são na verdade códigos unicode em que é convertido para imagens ou para algum outro caractere, por exemplo:
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEii3WmWsKpilZaELeHZgt0M2lj4UMTF-qEJz6_LoyqbFp0xVubxqMPxZ_LkPTqSajyASrqchfXmzNpsGM4pLr4v-uK_-VbCHLhqyfU6Nq4hLtO_dKKE1xuaIuf_cRpzYjYXXq2PavCXjIue/s1600/raised_hand.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;64&quot; data-original-width=&quot;64&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEii3WmWsKpilZaELeHZgt0M2lj4UMTF-qEJz6_LoyqbFp0xVubxqMPxZ_LkPTqSajyASrqchfXmzNpsGM4pLr4v-uK_-VbCHLhqyfU6Nq4hLtO_dKKE1xuaIuf_cRpzYjYXXq2PavCXjIue/s1600/raised_hand.png&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;a href=&quot;http://geraldobastos.blogspot.com/2018/09/string-e-substring.html#more&quot;&gt;Continuar lendo »&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8445743790537577224/posts/default/7328214607484711085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8445743790537577224/posts/default/7328214607484711085'/><link rel='alternate' type='text/html' href='http://geraldobastos.blogspot.com/2018/09/string-e-substring.html' title='String e Substring'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEii3WmWsKpilZaELeHZgt0M2lj4UMTF-qEJz6_LoyqbFp0xVubxqMPxZ_LkPTqSajyASrqchfXmzNpsGM4pLr4v-uK_-VbCHLhqyfU6Nq4hLtO_dKKE1xuaIuf_cRpzYjYXXq2PavCXjIue/s72-c/raised_hand.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8445743790537577224.post-4630502193385690372</id><published>2018-09-06T06:00:00.000-03:00</published><updated>2018-09-09T07:49:50.538-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="mark"/><category scheme="http://www.blogger.com/atom/ns#" term="Objective-C"/><category scheme="http://www.blogger.com/atom/ns#" term="pragma mark"/><category scheme="http://www.blogger.com/atom/ns#" term="Snippet"/><category scheme="http://www.blogger.com/atom/ns#" term="Swift"/><category scheme="http://www.blogger.com/atom/ns#" term="Xcode"/><title type='text'>#pragma mark - Swift</title><content type='html'>Quem começou desenvolvendo iOS com a linguagem Objective-C (ObjC), já sabe que conseguimos organizar nosso código utilizando - &lt;i&gt;&lt;b&gt;pragma mark&lt;/b&gt;&lt;/i&gt;.&lt;br&gt;
&lt;br&gt;
&lt;script src=&quot;https://gist.github.com/GeraldoBastos/710709a3cdeca35ed5fd9ae0a02eff17.js&quot;&gt;&lt;/script&gt;&lt;br&gt;
&lt;br&gt;
&lt;a href=&quot;http://geraldobastos.blogspot.com/2018/09/pragma-mark-swift.html#more&quot;&gt;Continuar lendo »&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8445743790537577224/posts/default/4630502193385690372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8445743790537577224/posts/default/4630502193385690372'/><link rel='alternate' type='text/html' href='http://geraldobastos.blogspot.com/2018/09/pragma-mark-swift.html' title='#pragma mark - Swift'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSbopMwsDJwOilmxFZyQcZ_1nSzV8cfqhtVJEtuv4lPr05r0Zbg7TDpBUc7DTc8yMSOjJxZ8rLlSqmUtC1u29hZZVzGaF9MsR62C-Byzof_hrDtwjAxkRkMOqq6jyPM8GeIYCwe2VFqhaS/s72-c/objc-jump-bar.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8445743790537577224.post-141467674597518072</id><published>2018-09-05T18:30:00.000-03:00</published><updated>2018-09-08T06:26:28.273-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Agile"/><category scheme="http://www.blogger.com/atom/ns#" term="BDD"/><category scheme="http://www.blogger.com/atom/ns#" term="Dan North"/><category scheme="http://www.blogger.com/atom/ns#" term="TDD"/><title type='text'>Compreendendo o Behaviour Driven Development - BDD</title><content type='html'>Quando comecei a estudar sobre desenvolvimento de testes, o que mais encontrei de artigos na internet foram relacionados a TDD e BDD. Recentemente, comecei a pesquisar um pouco sobre o famoso Behaviour Driven Development (BDD).&lt;br&gt;
&lt;br&gt;
Quem me conhece sabe que minhas pesquisas terminam sendo um pouco &amp;quot;exageradas&amp;quot; demais, porém preciso entender o que incentivou a criação e como aplicar em meu dia a dia como desenvolvedor e integrante de um time.&lt;br&gt;
&lt;br&gt;
&lt;a href=&quot;http://geraldobastos.blogspot.com/2018/09/compreendendo-obehaviour-driven.html#more&quot;&gt;Continuar lendo »&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8445743790537577224/posts/default/141467674597518072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8445743790537577224/posts/default/141467674597518072'/><link rel='alternate' type='text/html' href='http://geraldobastos.blogspot.com/2018/09/compreendendo-obehaviour-driven.html' title='Compreendendo o Behaviour Driven Development - BDD'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgasVvVgQNzYzKLPZMkTaPDRcoQ8M1RZ3mTCB4zqp0JE095J7U9EIy8kULrCI0dIJHrPWe3HEyRTIbnhNJ3eztZF9bK6QdJO_EwtbdLE1hHiyeIqFia0gVvlhir6FT9Fen_XZGLxI-Ey1Z0/s72-c/TDD.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8445743790537577224.post-859621580159104000</id><published>2018-09-05T09:18:00.001-03:00</published><updated>2018-09-09T07:50:01.691-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="contentInset"/><category scheme="http://www.blogger.com/atom/ns#" term="contentOffset"/><category scheme="http://www.blogger.com/atom/ns#" term="Dica"/><category scheme="http://www.blogger.com/atom/ns#" term="iOS"/><category scheme="http://www.blogger.com/atom/ns#" term="Swift"/><category scheme="http://www.blogger.com/atom/ns#" term="UIKit"/><category scheme="http://www.blogger.com/atom/ns#" term="UIScrollView"/><category scheme="http://www.blogger.com/atom/ns#" term="UITableView"/><category scheme="http://www.blogger.com/atom/ns#" term="UITextView"/><title type='text'>Compreendendo contentInset e contentOffset</title><content type='html'>Muito comum &amp;quot;trocar&amp;quot; o &lt;i&gt;contentInset&lt;/i&gt; e &lt;i&gt;contentOffset&lt;/i&gt; que existe na classe &lt;i&gt;UIScrollView&lt;/i&gt;, &lt;i&gt;UITableView&lt;/i&gt; e &lt;i&gt;UITextView&lt;/i&gt;. Nesse artigo, veremos a definição de cada um de uma forma simples.&lt;br&gt;
&lt;br&gt;
&lt;a href=&quot;http://geraldobastos.blogspot.com/2018/09/compreendendo-contentinset-e.html#more&quot;&gt;Continuar lendo »&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8445743790537577224/posts/default/859621580159104000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8445743790537577224/posts/default/859621580159104000'/><link rel='alternate' type='text/html' href='http://geraldobastos.blogspot.com/2018/09/compreendendo-contentinset-e.html' title='Compreendendo contentInset e contentOffset'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHMInqhO8qNVAbvzk9CbQqTbSWYPchPCXFcB7_r6MeiU87rzf2TExJ_n7v4UZsfJq9g8q3L_yUpeixtixbcVCDceCwNm3E3cgtd0hg1rDRHfz8URl_PtElaHQalGBTdrK0-9sI3t8ABUrX/s72-c/contentOffset_v2.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8445743790537577224.post-4528089775844327922</id><published>2018-09-03T20:05:00.002-03:00</published><updated>2018-09-08T06:29:01.152-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Arquitetura de Software"/><category scheme="http://www.blogger.com/atom/ns#" term="iOS"/><category scheme="http://www.blogger.com/atom/ns#" term="Mobile"/><category scheme="http://www.blogger.com/atom/ns#" term="MVC"/><category scheme="http://www.blogger.com/atom/ns#" term="MVVM"/><title type='text'>MVVM não é tudo isso</title><content type='html'>Esse artigo é um pouco diferente, pois trata-se de uma leitura que fiz sobre esse tema e o resultado que tive após os estudos. Por isso ele será curto, pois seu conteúdo se encontra nos slides. Espero que goste ;)&lt;br&gt;
&lt;br&gt;
&lt;a href=&quot;http://geraldobastos.blogspot.com/2018/09/mvvm-nao-e-tudo-isso.html#more&quot;&gt;Continuar lendo »&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8445743790537577224/posts/default/4528089775844327922'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8445743790537577224/posts/default/4528089775844327922'/><link rel='alternate' type='text/html' href='http://geraldobastos.blogspot.com/2018/09/mvvm-nao-e-tudo-isso.html' title='MVVM não é tudo isso'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-8445743790537577224.post-2575142006151475106</id><published>2018-09-03T20:02:00.003-03:00</published><updated>2018-09-24T13:36:56.856-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Arquitetura de Software"/><category scheme="http://www.blogger.com/atom/ns#" term="iOS"/><category scheme="http://www.blogger.com/atom/ns#" term="Mobile"/><category scheme="http://www.blogger.com/atom/ns#" term="MVC"/><category scheme="http://www.blogger.com/atom/ns#" term="MVVM"/><title type='text'>Parte 2  -  Qual a melhor arquitetura para aplicações iOS? MVVM?</title><content type='html'>Dentre várias arquiteturas que existem e que estão por vir, existe uma que consiga resolver todos os problemas, certo?!&lt;br&gt;
&lt;br&gt;
Na parte 1 do artigo (&lt;a href=&quot;https://www.geraldobastos.com/2018/09/qual-melhor-arquitetura-para-aplicacoes.html&quot; target=&quot;_blank&quot;&gt;Qual a melhor arquitetura para aplicações iOS? MVC?&lt;/a&gt;) foram traçadas três características que determinam uma boa arquitetura:&lt;br&gt;
&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;Fácil de usar.&lt;/li&gt;
&lt;li&gt;Responsabilidades distribuídas.&lt;/li&gt;
&lt;li&gt;Pode ser testada.&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;
Vimos que o MVC de acordo com sua origem funcionou e ainda funciona para outros contextos e compreendemos a diferença do MVC da Apple e suas problemáticas.&lt;br&gt;
&lt;br&gt;
Nesse artigo, iremos analisar a arquitetura Model-View-ViewModel ou mais conhecida como MVVM.&lt;br&gt;
&lt;br&gt;
&lt;a href=&quot;http://geraldobastos.blogspot.com/2018/09/parte-2-qual-melhor-arquitetura-para.html#more&quot;&gt;Continuar lendo »&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8445743790537577224/posts/default/2575142006151475106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8445743790537577224/posts/default/2575142006151475106'/><link rel='alternate' type='text/html' href='http://geraldobastos.blogspot.com/2018/09/parte-2-qual-melhor-arquitetura-para.html' title='Parte 2  -  Qual a melhor arquitetura para aplicações iOS? MVVM?'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiCmEeLOMsQ_6s_pzRg7Q8nvJzWwnCYfCKIm2m7-6vHN_DVVAeK_xPrkgTsoT_DGOHuqt7N2bLNszsG950LSq0yBtVRgOYRnibqM0WgvBgRyIeXlMU_rePFgzoCOMOoZHa5OgfOXtmDEvn/s72-c/mvvm.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8445743790537577224.post-6461789553592618110</id><published>2018-09-03T19:40:00.002-03:00</published><updated>2018-09-24T13:35:27.732-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Arquitetura de Software"/><category scheme="http://www.blogger.com/atom/ns#" term="iOS"/><category scheme="http://www.blogger.com/atom/ns#" term="Mobile"/><category scheme="http://www.blogger.com/atom/ns#" term="MVC"/><category scheme="http://www.blogger.com/atom/ns#" term="MVVM"/><category scheme="http://www.blogger.com/atom/ns#" term="Swift"/><category scheme="http://www.blogger.com/atom/ns#" term="Viper"/><title type='text'>Qual a melhor arquitetura para aplicações iOS? MVC?</title><content type='html'>&lt;h3&gt;
Dentre várias arquiteturas que existem e que estão por vir, existe uma que consiga resolver todos os problemas, certo?!&lt;/h3&gt;
&lt;br&gt;
Tenho ouvido essa pergunta constantemente e em diferentes lugares, porém todas em um mesmo contexto, uma aplicação que tem dado muito trabalho e se tornando algo difícil/trabalhoso de implementar novas funcionalidades e até mesmo realizar correções.&lt;br&gt;
&lt;br&gt;
Acredito que todos (desenvolvedores) em algum momento já questionou em nível arquitetural a existência de uma que resolva todos os problemas. Eu já passei por isso e já tem bastante tempo que estou gastando algumas horas do meu dia para estudar cada vez mais arquitetura, não só no contexto iOS, mas buscando compreender as escolhas que as pessoas fazem.&lt;br&gt;
&lt;br&gt;
&lt;a href=&quot;http://geraldobastos.blogspot.com/2018/09/qual-melhor-arquitetura-para-aplicacoes.html#more&quot;&gt;Continuar lendo »&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8445743790537577224/posts/default/6461789553592618110'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8445743790537577224/posts/default/6461789553592618110'/><link rel='alternate' type='text/html' href='http://geraldobastos.blogspot.com/2018/09/qual-melhor-arquitetura-para-aplicacoes.html' title='Qual a melhor arquitetura para aplicações iOS? MVC?'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKHDIyZ2hthO0SFyqMHcGuH6ku3xna-XXIdNNc31QP7-qT8PI5vNr0C_VyFy9nxeDm_qN_6TqRqH3zgYiSu7xw2ZI3de4uIgGV87TtW73sLjsQvZTsT0LY3R_L3DpY_tUwr0hXiFZkVIWH/s72-c/meme.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8445743790537577224.post-4370664406464871363</id><published>2018-09-03T13:24:00.000-03:00</published><updated>2018-09-08T18:16:04.929-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="IBInspectable"/><category scheme="http://www.blogger.com/atom/ns#" term="iOS"/><category scheme="http://www.blogger.com/atom/ns#" term="Swift"/><title type='text'>Why I can’t use IBInspectable with enumeration?</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
I remember when I saw the &lt;b&gt;WWDC&lt;/b&gt; in 2014 about the &lt;b&gt;IBInspectable&lt;/b&gt; and &lt;b&gt;IBDesignable&lt;/b&gt;, my reaction was:&lt;/div&gt;
&lt;br&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhekXIA5r5hXnsM0znuoyv3WKfsCdKSiokrtEdw_8DVhuUeHUwS9YPAaW6PgqLclvZbG1pkVbV7KXw-wk7ObMWP0hYmWT1Fa1-R2OunvNiWa44ziVFhL0aJHCsXWsu524ew6SBTnW-IK0kR/s1600/meme.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;256&quot; data-original-width=&quot;250&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhekXIA5r5hXnsM0znuoyv3WKfsCdKSiokrtEdw_8DVhuUeHUwS9YPAaW6PgqLclvZbG1pkVbV7KXw-wk7ObMWP0hYmWT1Fa1-R2OunvNiWa44ziVFhL0aJHCsXWsu524ew6SBTnW-IK0kR/s200/meme.png&quot; width=&quot;195&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;/div&gt;
&lt;a href=&quot;http://geraldobastos.blogspot.com/2018/09/why-i-cant-use-ibinspectable-with.html#more&quot;&gt;Continuar lendo »&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8445743790537577224/posts/default/4370664406464871363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8445743790537577224/posts/default/4370664406464871363'/><link rel='alternate' type='text/html' href='http://geraldobastos.blogspot.com/2018/09/why-i-cant-use-ibinspectable-with.html' title='Why I can’t use IBInspectable with enumeration?'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhekXIA5r5hXnsM0znuoyv3WKfsCdKSiokrtEdw_8DVhuUeHUwS9YPAaW6PgqLclvZbG1pkVbV7KXw-wk7ObMWP0hYmWT1Fa1-R2OunvNiWa44ziVFhL0aJHCsXWsu524ew6SBTnW-IK0kR/s72-c/meme.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8445743790537577224.post-5427268518257071201</id><published>2018-09-03T13:04:00.000-03:00</published><updated>2018-09-08T06:32:05.357-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ibdesignable"/><category scheme="http://www.blogger.com/atom/ns#" term="IBInspectable"/><category scheme="http://www.blogger.com/atom/ns#" term="Swift"/><title type='text'>What’s IBDesignable / IBInspectable?</title><content type='html'>IBDesignable and IBInspectable are attributes used by Interface Builder, but different than IBOutlet and IBAction that are attributes too, IBInspectable and IBDesignable are used to render elements directly in Interface Builder.&lt;br&gt;
&lt;br&gt;
&lt;a href=&quot;http://geraldobastos.blogspot.com/2018/09/whats-ibdesignable-ibinspectable.html#more&quot;&gt;Continuar lendo »&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8445743790537577224/posts/default/5427268518257071201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8445743790537577224/posts/default/5427268518257071201'/><link rel='alternate' type='text/html' href='http://geraldobastos.blogspot.com/2018/09/whats-ibdesignable-ibinspectable.html' title='What’s IBDesignable / IBInspectable?'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRI5H9e5Uk98RbmvHIQVwrv2tI8GmGGwzW-5vksCyt56B9sRcop6y8iTGEtYu42_HGU5gPRACNKqxTCDsyxIIx8r4Nz2kiErBE7YktIfJ9BVH_iw6_2NaxDIV8ZiIwLzlp-ivwlUKLaVDQ/s72-c/wwdc14.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8445743790537577224.post-6667557108211725570</id><published>2018-08-30T22:30:00.000-03:00</published><updated>2018-09-08T06:31:56.237-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Agile"/><category scheme="http://www.blogger.com/atom/ns#" term="Extreme Programming"/><category scheme="http://www.blogger.com/atom/ns#" term="Software Development"/><category scheme="http://www.blogger.com/atom/ns#" term="TDD"/><category scheme="http://www.blogger.com/atom/ns#" term="Tests"/><title type='text'>Why? What? How? The Importance of Test</title><content type='html'>&lt;h2&gt;
Introduction&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;
Unfortunately, it isn&amp;#39;t common to see the test code in a mobile project. Because many people don&amp;#39;t know the importance of testing, which is or how to do it.&lt;br&gt;
&lt;br&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br&gt;
&lt;/div&gt;&lt;/div&gt;&lt;a href=&quot;http://geraldobastos.blogspot.com/2018/08/why-what-how-importance-of-test.html#more&quot;&gt;Continuar lendo »&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8445743790537577224/posts/default/6667557108211725570'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8445743790537577224/posts/default/6667557108211725570'/><link rel='alternate' type='text/html' href='http://geraldobastos.blogspot.com/2018/08/why-what-how-importance-of-test.html' title='Why? What? How? The Importance of Test'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFSJCudIr7Fq4_pMqjHgdb_HHs8rj1amob0cgztBP8sJeZH0SqQ-M4g41Eozl4w8BGpcFFDULhuMFGb4NHKIzFUd2UixTT7TLgAuyBp59uOcQaV1yuK8HkyKHbDw0e-pszfhAm5Hf0u2XO/s72-c/test-validation.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8445743790537577224.post-1782780112877293231</id><published>2018-08-30T08:38:00.000-03:00</published><updated>2018-09-08T06:23:12.785-03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Cocoapods"/><category scheme="http://www.blogger.com/atom/ns#" term="Codesigningallowed"/><category scheme="http://www.blogger.com/atom/ns#" term="Codesigningrequired"/><category scheme="http://www.blogger.com/atom/ns#" term="ibdesignable"/><category scheme="http://www.blogger.com/atom/ns#" term="Xcode 9"/><title type='text'>IBDesignable não funciona no meu framework com CocoaPods</title><content type='html'>&lt;br&gt;
&lt;div style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;
&lt;/div&gt;
&lt;br&gt;
É muito comum em um projeto iOS o desenvolvedor utilizar alguma biblioteca/framework de terceiro ou próprio para facilitar o desenvolvimento da aplicação.&lt;br&gt;
&lt;br&gt;
&lt;a href=&quot;http://geraldobastos.blogspot.com/2018/08/ibdesignable-nao-funciona-no-meu.html#more&quot;&gt;Continuar lendo »&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8445743790537577224/posts/default/1782780112877293231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8445743790537577224/posts/default/1782780112877293231'/><link rel='alternate' type='text/html' href='http://geraldobastos.blogspot.com/2018/08/ibdesignable-nao-funciona-no-meu.html' title='IBDesignable não funciona no meu framework com CocoaPods'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhejhkH0caKToI8NhALGTesAYJyz_kyTBI4d8E2pjoTXc7NJ2v0P_jmH4PGfjNEFCN8ZRNEdz5u1YOmiIyqqoEIG-DEWcybNMNqd8QG8xccwDev7i50RBs9TAh-Y5_1xlnXnM7bftQQd2CI/s72-c/1*3JOGyXDCjYC27fSTLc4Atw.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8445743790537577224.post-6887683271060862178</id><published>2018-08-30T06:31:00.000-03:00</published><updated>2018-09-08T06:34:54.646-03:00</updated><title type='text'>Why? What? How? The Importance of Test - Part 2</title><content type='html'>This is a second article about the importance of testing. If you didn&amp;#39;t see the first post, click &lt;a href=&quot;https://www.geraldobastos.com/2018/08/why-what-how-importance-of-test.html&quot;&gt;here&lt;/a&gt; to understand the basic importance to create tests.&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;a href=&quot;http://geraldobastos.blogspot.com/2018/08/why-what-how-importance-of-test-part-2.html#more&quot;&gt;Continuar lendo »&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8445743790537577224/posts/default/6887683271060862178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8445743790537577224/posts/default/6887683271060862178'/><link rel='alternate' type='text/html' href='http://geraldobastos.blogspot.com/2018/08/why-what-how-importance-of-test-part-2.html' title='Why? What? How? The Importance of Test - Part 2'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNDfkxZArApDODWIAWzX7kugcdtjIZ2DH-lhQZ_bR5179MAWnP_vAneoT2-I_GJqYqEu4N4Fw7nLyVi6BiBF7wYiRhC7n86D0EBNZ4vlolpHkZHkRboyXXdX5ApTLzYh-CaQt4QcrNGjfw/s72-c/tdd_flow.png" height="72" width="72"/></entry></feed>