<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Matheus Ferreira da Silva Nascimento</title>
    <description>The latest articles on Forem by Matheus Ferreira da Silva Nascimento (@codebymattz).</description>
    <link>https://forem.com/codebymattz</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F748121%2Fec7fae6d-c595-431b-a0e6-56772c9926cc.jpeg</url>
      <title>Forem: Matheus Ferreira da Silva Nascimento</title>
      <link>https://forem.com/codebymattz</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/codebymattz"/>
    <language>en</language>
    <item>
      <title>You know the difference about Weak and Unowned reference in iOS?</title>
      <dc:creator>Matheus Ferreira da Silva Nascimento</dc:creator>
      <pubDate>Wed, 07 Aug 2024 13:02:41 +0000</pubDate>
      <link>https://forem.com/codebymattz/you-know-the-difference-about-weak-and-unowned-reference-in-ios-3309</link>
      <guid>https://forem.com/codebymattz/you-know-the-difference-about-weak-and-unowned-reference-in-ios-3309</guid>
      <description>&lt;p&gt;Recently, I was asked about this topic in a interview, and it's made me thinking about this subject, and realize that can pass unseen sometimes. Based on this, I decide write this article to help early iOS Developers, I going to unite two mine passions here, beyond iOS Development, that are Football and Pokémon, to exemplify.&lt;/p&gt;

&lt;p&gt;Quick tip: Write subjects like that in post-it's, do smart notes always as a good way to fix the knowleadge and remember when we forget.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is ARC?
&lt;/h2&gt;

&lt;p&gt;Before talking about weak and unowned, it's important to understand ARC (Automatic Reference Counting). ARC is a system that Swift uses to automatically manage the memory of objects. It tracks how many times an object is referenced and deallocates it from memory when there are no more references to it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Weak References
&lt;/h2&gt;

&lt;p&gt;Imagine that Pikachu and Ash are friends on a Pokémon journey.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Weak Reference:&lt;/strong&gt; Pikachu has a weak link with Ash. If Ash decides to leave, Pikachu doesn’t try to stop him or keep the space occupied by Ash.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class Pokemon {
    weak var friend: Pokemon?
}

var pikachu: Pokemon? = Pokemon()
var ash: Pokemon? = Pokemon()
pikachu?.friend = ash
ash?.friend = pikachu

pikachu = nil
// ash?.friend is now nil because pikachu was deallocated
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  When to use weak?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Reference Cycles:&lt;/strong&gt; We use weak when we want to avoid reference cycles. This happens when two objects reference each other, preventing ARC from deallocating either of them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Avoiding Memory Leaks:&lt;/strong&gt; Since weak doesn't keep the object in memory, it's ideal for situations where the referenced object can be deallocated without issues.&lt;/p&gt;

&lt;h2&gt;
  
  
  Unowned References
&lt;/h2&gt;

&lt;p&gt;Now, imagine a soccer team with a coach.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Unowned Reference:&lt;/strong&gt; The coach of the team has a link with a star player, believing that the player will always be there as long as the coach needs him. If the player gets transferred to another team, this could cause a problem.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class Player {
    var coach: Coach?
    init(coach: Coach) {
        self.coach = coach
    }
}

class Coach {
    unowned var starPlayer: Player
    init(starPlayer: Player) {
        self.starPlayer = starPlayer
    }
}

var messi: Player? = Player(coach: Coach(starPlayer: messi!))

messi = nil
// Accessing coach?.starPlayer will now cause an error because messi was deallocated
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  When to use unowned?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Existence Guarantee:&lt;/strong&gt; We use unowned when we're sure that the referenced object will be in memory as long as the reference exists.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Master-Detail Relationships:&lt;/strong&gt; Ideal for situations where a main object (master) guarantees the existence of the referenced object (detail).&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;weak:&lt;/strong&gt;&lt;br&gt;
Doesn’t keep the object in memory.&lt;br&gt;
Optional reference, can become nil.&lt;br&gt;
Used when the referenced object’s lifecycle may be shorter.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;unowned:&lt;/strong&gt;&lt;br&gt;
Doesn’t keep the object in memory.&lt;br&gt;
Non-optional reference, never becomes nil.&lt;br&gt;
Used when the referenced object’s lifecycle is guaranteed to be equal to or longer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;I hope this explanation helps clarify the difference between weak and unowned! Keep going strong in your learning journey, drink water, and always believe in yourself!&lt;/p&gt;

</description>
      <category>ios</category>
      <category>mobile</category>
      <category>computerscience</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>Você sabe a diferença entre Weak e Unowned?</title>
      <dc:creator>Matheus Ferreira da Silva Nascimento</dc:creator>
      <pubDate>Wed, 07 Aug 2024 12:58:19 +0000</pubDate>
      <link>https://forem.com/codebymattz/voce-sabe-a-diferenca-entre-weak-e-unowned-1ik8</link>
      <guid>https://forem.com/codebymattz/voce-sabe-a-diferenca-entre-weak-e-unowned-1ik8</guid>
      <description>&lt;p&gt;Recentemente, me fizeram essa pergunta em uma entrevista. Fiquei pensando sobre isso e percebi que, apesar de ser um tópico super interessante, muitas vezes a galera que está começando pode acabar deixando isso passar batido no cronograma de estudos. Com base nisso, resolvi escrever esse artigo pra compartilhar conhecimento e também consolidar o meu.&lt;/p&gt;

&lt;p&gt;Uma dica: Escreva smart notes em post-it's, para fixar o conhecimento, principalmente sobre tópicos como esse.&lt;/p&gt;

&lt;p&gt;Quando estamos falando sobre referencias de memória, é essencial que você tenha conhecimento sobre o ARC (Automatic Reference Counting) e seu funcionamento.&lt;/p&gt;

&lt;h2&gt;
  
  
  O que é ARC?
&lt;/h2&gt;

&lt;p&gt;Antes de falar sobre weak e unowned, é importante entender o ARC (Automatic Reference Counting). O ARC é um sistema que Swift usa para gerenciar a memória dos objetos automaticamente. Ele rastreia quantas vezes um objeto é referenciado e o desaloca da memória quando não há mais referências a ele.&lt;/p&gt;

&lt;h2&gt;
  
  
  Referências weak (Fraca)
&lt;/h2&gt;

&lt;p&gt;Imagine que Pikachu e Ash são amigos em uma jornada Pokémon.&lt;/p&gt;

&lt;p&gt;Referência Fraca: Pikachu tem uma ligação fraca com Ash. Se Ash decidir ir para longe, Pikachu não tenta impedi-lo nem mantém o espaço ocupado por Ash.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class Pokemon {
    weak var amigo: Pokemon?
}

var pikachu: Pokemon? = Pokemon()
var ash: Pokemon? = Pokemon()
pikachu?.amigo = ash
ash?.amigo = pikachu

pikachu = nil
// ash?.amigo agora é nil porque pikachu foi desalocado
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Quando usar weak?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Ciclos de Referência:&lt;/strong&gt; Usamos weak quando queremos evitar ciclos de referência. Isso acontece quando dois objetos referenciam um ao outro, impedindo que o ARC desaloque algum deles.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Evitar Vazamentos de Memória:&lt;/strong&gt; Como weak não mantém o objeto na memória, ele é ideal para situações onde o objeto referenciado pode ser desalocado sem problemas.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reference unowned (Não Própria)
&lt;/h2&gt;

&lt;p&gt;Agora, imagine que um time de futebol tem um técnico.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Referência Não Própria:&lt;/strong&gt; O técnico do time tem uma ligação com um jogador estrela, acreditando que esse jogador sempre estará lá enquanto o técnico precisar dele. Se o jogador for transferido para outro time, isso pode causar um problema.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class Jogador {
    var tecnico: Tecnico?
    init(tecnico: Tecnico) {
        self.tecnico = tecnico
    }
}

class Tecnico {
    unowned var jogadorEstrela: Jogador
    init(jogadorEstrela: Jogador) {
        self.jogadorEstrela = jogadorEstrela
    }
}

var messi: Jogador? = Jogador(tecnico: Tecnico(jogadorEstrela: messi!))

messi = nil
// Acessar tecnico?.jogadorEstrela agora causará um erro porque messi foi desalocado
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Quando usar unowned?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Garantia de Existência:&lt;/strong&gt; Usamos unowned quando temos certeza de que o objeto referenciado estará na memória enquanto a referência existir.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Relacionamentos Mestre-Detalhe:&lt;/strong&gt; Ideal para situações onde um objeto principal (mestre) garante a existência do objeto referenciado (detalhe).&lt;/p&gt;

&lt;h2&gt;
  
  
  Resumo
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Weak (Fraco):&lt;/strong&gt;&lt;br&gt;
Não mantém o objeto na memória.&lt;br&gt;
Referência opcional (Optional), pode se tornar nil.&lt;br&gt;
Usado quando o ciclo de vida do objeto referenciado pode ser mais curto.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Unowned (Não Próprio):&lt;/strong&gt;&lt;br&gt;
Não mantém o objeto na memória.&lt;br&gt;
Referência não opcional, nunca pode se tornar nil.&lt;br&gt;
Usado quando o ciclo de vida do objeto referenciado é garantido ser igual ou maior.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusão
&lt;/h2&gt;

&lt;p&gt;Espero que esta explicação ajude a esclarecer a diferença entre weak e unowned!&lt;/p&gt;

&lt;p&gt;Sucesso na sua trajetória! Beba água e tenha fé em si mesmo, sempre.&lt;/p&gt;

</description>
      <category>ios</category>
      <category>mobile</category>
      <category>softwareengineering</category>
      <category>computerscience</category>
    </item>
    <item>
      <title>Roadmap for iOS Development in 2024.</title>
      <dc:creator>Matheus Ferreira da Silva Nascimento</dc:creator>
      <pubDate>Sat, 22 Jun 2024 17:41:42 +0000</pubDate>
      <link>https://forem.com/codebymattz/roadmap-for-ios-development-in-2024-4bel</link>
      <guid>https://forem.com/codebymattz/roadmap-for-ios-development-in-2024-4bel</guid>
      <description>&lt;p&gt;In recent years, we have witnessed a rapid evolution in the iOS development ecosystem. With each new version of iOS, new technologies, tools, and recommended practices emerge, transforming the way apps are conceived, developed, and distributed. As we enter 2024, the world of iOS development continues to expand, offering opportunities for those who wish to dive into this realm.&lt;/p&gt;

&lt;p&gt;In this article, we will explore a roadmap to become an iOS developer in 2024. From essential fundamentals to advanced technologies. Whether you are an aspiring developer looking to start your journey or an experienced professional seeking to stay updated, this roadmap is designed to guide you towards success in iOS development.&lt;/p&gt;

&lt;h2&gt;
  
  
  Foundations:
&lt;/h2&gt;

&lt;p&gt;The Swift Programming Language: Swift is the primary language for iOS development. It is essential to have a solid grasp of Swift syntax, data types, optionals, and object-oriented programming concepts.&lt;/p&gt;

&lt;p&gt;Understanding Xcode and Interface Builder: Xcode is the official integrated development environment (IDE) for iOS development. Understanding how Xcode works will greatly optimize your time if you are familiar with the environment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Screen Building:
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;UIKit Framework&lt;/strong&gt;: Mastering UIKit is essential for building iOS user interfaces. This includes understanding various available components such as view controllers and navigation controllers, as well as designing responsive and visually appealing layouts.&lt;br&gt;
Auto Layout and Responsive Design: Understanding auto-layout is crucial to ensure that interfaces adapt to different screen sizes and orientations, providing a consistent experience to users.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SwiftUI&lt;/strong&gt;: While UIKit is still widely used, SwiftUI is emerging as a modern and powerful alternative for building user interfaces. Despite its growing adoption, understanding the basics of SwiftUI can be advantageous to keep up with future iOS development trends.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Storyboard&lt;/strong&gt;: Both the use of storyboards and programmatic interfaces have their advantages and disadvantages. It is important to be comfortable with both methods to ensure flexibility in interface creation according to project needs.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Architecture and Data Persistence:&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;iOS App Architecture&lt;/strong&gt;: MVC, MVVM, VIPER: Choosing the right architecture is crucial to ensure the scalability and maintainability of an iOS application. Developers should be familiar with models such as MVC, MVVM, and VIPER, understanding the advantages and disadvantages of each approach.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Data Persistence with Core Data&lt;/strong&gt;: To store data locally in iOS applications, knowledge of Core Data is essential. This framework offers an efficient way to persist and retrieve data, allowing applications to provide a consistent experience to users, even offline.&lt;/p&gt;

&lt;h2&gt;
  
  
  Service Integration:
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Networking with URLSession and Alamofire&lt;/strong&gt;: Integrating web services into iOS applications requires skills in making efficient network requests. Developers should be comfortable with using native URLSession or popular libraries like Alamofire to ensure effective communication with servers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;User Authentication and Authorization&lt;/strong&gt;: Implementing secure authentication is essential to protect user data. Developers should understand different authentication methods, such as OAuth and Apple Sign-In, ensuring a secure and convenient login experience for users.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Testing: Ensuring Code Quality&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Unit Testing and Integration Testing&lt;/strong&gt;: Unit tests are essential to ensure that each component of the application functions as expected, isolating and testing individual parts of the code. Developers should write comprehensive tests to verify the behavior of classes, methods, and functions. Additionally, integration tests should be conducted to ensure that different components of the application work correctly together.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;UI Testing&lt;/strong&gt;: UI tests ensure that the application’s user interface functions correctly and provides a consistent experience to users. Tools like XCTest and UI Testing Framework help developers automate UI tests, simulating user interactions and verifying interface behavior in different scenarios.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Performance and Stress Testing&lt;/strong&gt;: In addition to functional tests, developers should also conduct performance and stress tests to ensure that the application is responsive and stable, even under heavy load or adverse conditions. This involves testing the application’s responsiveness, resource consumption, and loading time on different devices and network conditions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Accessibility Testing&lt;/strong&gt;: Ensuring that the application is accessible to all users, including those with visual, auditory, or motor impairments, is essential. Developers should conduct accessibility tests to verify that the application meets Apple’s accessibility standards and provides an inclusive experience for all users.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Continuous Testing and Continuous Integration&lt;/strong&gt;: Continuous integration and automated testing should be incorporated into the development process to ensure that code is regularly tested and integrated into the main repository seamlessly. This helps identify and fix issues proactively, ensuring continuous quality of the application throughout the development cycle.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Monetization and Distribution:&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Push Notifications and Background Processing&lt;/strong&gt;: Implementing push notifications and handling background tasks are essential features to keep users engaged and informed, even when the application is not actively in use.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In-App Purchases and Monetization Strategies&lt;/strong&gt;: For developers focusing on monetization strategies, understanding in-app purchases and integrating payment systems is crucial. It is important to follow Apple’s guidelines and provide a transparent and secure purchasing experience for users.&lt;/p&gt;

&lt;h2&gt;
  
  
  App Store Submission and Distribution Best Practices:
&lt;/h2&gt;

&lt;p&gt;Navigating the App Store submission process requires a good understanding of Apple’s guidelines and app review requirements. Developers should follow best practices for app distribution to ensure that their applications are approved and successfully distributed to users.&lt;/p&gt;

</description>
      <category>ios</category>
      <category>swift</category>
      <category>mobile</category>
      <category>apple</category>
    </item>
    <item>
      <title>Using the KingFisher library in iOS development.</title>
      <dc:creator>Matheus Ferreira da Silva Nascimento</dc:creator>
      <pubDate>Sat, 22 Jun 2024 17:30:11 +0000</pubDate>
      <link>https://forem.com/codebymattz/using-the-kingfisher-library-in-ios-development-11ph</link>
      <guid>https://forem.com/codebymattz/using-the-kingfisher-library-in-ios-development-11ph</guid>
      <description>&lt;p&gt;The Kingfisher library is a valuable tool for efficiently loading and displaying images in iOS applications. Since its emergence about 8 years ago, the iOS community has widely adopted it due to its simplicity, performance, and robust features. Kingfisher is an open-source library with over 200 contributors to date and more than 2,500 commits.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Advantages offered by the library:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Efficient Loading&lt;/em&gt;&lt;/strong&gt;: One of Kingfisher’s main advantages is its asynchronous image loading, ensuring that the application remains responsive while images are downloaded. This is essential for providing a smooth user experience, especially in image-heavy apps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Automatic Cache&lt;/em&gt;&lt;/strong&gt;: Kingfisher automatically manages image caching, eliminating the need for manual intervention. This not only improves the efficiency of the application but also saves bandwidth and speeds up loading times for previously downloaded images.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Simple Integration&lt;/em&gt;&lt;/strong&gt;: The library offers smooth integration with UIImageView, simplifying the process of loading and displaying images. With just a few lines of code, you can implement advanced functionality such as displaying placeholder images during download.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Visual Feature Support&lt;/em&gt;&lt;/strong&gt;: Kingfisher supports placeholders, smooth transitions, and prevention of memory retention issues.&lt;/p&gt;

&lt;h2&gt;
  
  
  Implementing the Kingfisher Library in iOS Development: A Practical Example
&lt;/h2&gt;

&lt;p&gt;Recently, I integrated the library into my Pokedex project, which is simple but can experience delays in loading images due to the number of Pokémon to be displayed. The use of Kingfisher fits perfectly in this scenario. Here’s a practical implementation example:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import SwiftUI
import Kingfisher
struct PokemonCell: View {

let pokemon: PokemonModel
@State private var image: UIImage?

var body: some View {
    let color = Color.pokemon(type: pokemon.pokemonType)
    ZStack {
        VStack {
            HStack {
                title
                Spacer()
                type
            }
            .padding(.top, 10)
            .padding(.horizontal, 10)

            if let url = URL(string: pokemon.imageUrl) {
                KFImage(url)
                    .placeholder {
                        ProgressView()
                    }
                    .resizable()
                    .scaledToFit()
                    .frame(width: 130, height: 150)
                    .padding(10)
            }
        }
    }
    .frame(maxWidth: .infinity, maxHeight: .infinity)
    .background(color)
    .cornerRadius(12)
    .shadow(color: color.opacity(0.7), radius: 6, x: 0.0, y: 0.0)
}

var title: some View {
    Text(pokemon.name.capitalized)
        .font(.headline).bold()
        .foregroundColor(.white)
}

var type: some View {
    Text(pokemon.pokemonType.rawValue)
        .font(.subheadline).bold()
        .foregroundColor(.white)
        .padding(.horizontal, 10)
        .padding(.vertical, 6)
        .overlay(
            RoundedRectangle(cornerRadius: 20)
                .fill(Color.white.opacity(0.25))
        )
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;As you can see, the implementation is straightforward. Follow the steps in this example:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Import the Kingfisher library: Make sure to add import Kingfisher at the beginning of your Swift file to access the library's resources.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Define your SwiftUI Cell: In the example above, I created the PokemonCell structure to represent the Pokémon cell. The image URL comes from the PokemonModel model (remember that I used the MVVM architecture in this project).&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Simple Loading and Caching: Use KFImage(url) to load the image from the URL provided by the template. The .placeholder block displays a progress indicator while loading. Kingfisher automatically takes care of caching, ensuring a fast and efficient user experience.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;And with that, you already have everything you need!&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ios</category>
      <category>apple</category>
      <category>mobile</category>
      <category>swift</category>
    </item>
  </channel>
</rss>
