Conceitos 2 Flashcards

1
Q

O que é SDK? Quais são utilizadas no desenvolvimento iOS?

A

Kit de desenvolvimento de software (Software development kit). Exemplos: O iOS SDK, combinado com o Xcode, ajuda os desenvolvedores a escrever aplicativos iOS usando linguagens de programação com suporte oficial, incluindo Swift e Objective-C.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Quando usar Coding Keys ?

A

A enumeração CodingKeys é usada para mapear entre os nomes das propriedades no código Swift e as chaves nos dados JSON. Por exemplo, se a chave nos dados JSON for diferente do nome da propriedade no código Swift, o nome da propriedade poderá ser mapeado para a chave JSON correta usando a enumeração CodingKeys.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Quando usar weak var ? O que é instância ? Qual a relação dessa propriedade com protocolos e delegates ?

A

Devemos utilizar para evitar o retain cycle, onde existe uma referencia forte entre duas instâncias segurando uma á outra. Uma instância é uma representação de um objeto que pode ser uma classe ou struct. Por padrão as referência em swift são strong, o que significa que elas mantêm uma contagem de referência ao objeto que referenciam. Isso implica que o objeto não será desalocado da memória enquanto houver pelo menos uma referência strong a ele. A relação com protocols e delegates é a instância deles deve normalmente ser weak pois eles tem uma responsabilidade e depois de cumprida deve ser desalocado para evitar os retain cycles.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Explique o ciclo de vida da controller.

A

init(coder:) / init(nibName:bundle:) / init(): A instância da UIViewController é inicializada.

loadView(): Este método é chamado automaticamente quando a controladora é acessada pela primeira vez e não há uma view associada a ela. É responsável por criar e configurar a hierarquia de views da controladora, definindo a propriedade view.

viewDidLoad(): Chamado após a conclusão bem-sucedida do carregamento da hierarquia de views da controladora. É um bom lugar para realizar configurações adicionais que requerem que as views estejam carregadas.

viewDidDisappear: Notifica o controlador de visualização de que sua visualização foi removida de uma hierarquia de visualização.

viewWillAppear(_:): Chamado antes de a view da controladora ser exibida na tela. Geralmente, usado para configurações que devem ocorrer antes da animação de transição.

viewDidAppear(_:): Chamado após a view da controladora ser exibida na tela. Útil para execução de tarefas que devem ocorrer quando a view já está visível.

viewWillDisappear(:) / viewDidDisappear(:): Chamados quando a view da controladora está prestes a desaparecer ou já desapareceu da tela. São úteis para realizar ações antes ou depois da transição da tela.

Lembre-se de que o método loadView não é sempre necessário. Se você estiver usando um storyboard ou uma xib para criar a interface do usuário, o sistema automaticamente carregará a hierarquia de views, e o método loadView não precisará ser implementado manualmente.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Explique weak vs unowned.

A

Uma referência weak é uma referência que não impede que o objeto referenciado seja desalocado pelo tempo de execução Swift. Uma referência unowned, por outro lado, é uma referência que não mantém um controle forte sobre o objeto referenciado.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Quais patterns você conhece?

A

Delegate, Singleton, MVVM, Viper…

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Explique Retain Cycle? E vazamentos de memória ? Como identificar gargalos como esse utilizando o xcode?

A

No Swift, os ciclos de retenção, também conhecidos como ciclos de referência forte, ocorrem quando dois ou mais objetos têm referências fortes um ao outro. Os ciclos de retenção podem impedir que objetos sejam liberados da memória, resultando em vazamentos de memória e baixo desempenho ao longo do tempo. As closures também podem sofrer ciclos de retenção.; Vazamento de memória: Um vazamento de memória é uma parte da memória que nunca será usada, mas que será mantida para sempre. É uma perda de espaço e pode causar falhas para o usuário final; No xcode tem no menu superior esquerdo o debug navigator onde é possivel analisar os leaks de memória.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

O que é solid ?

A

O acrônimo SOLID representa os cinco princípios que facilitam o processo de desenvolvimento — o que facilita a manutenção e a expansão do software.

Estes princípios são fundamentais na programação orientada a objetos e podem ser aplicados em qualquer linguagem que adote este paradigma.

Os 5 princípios são:

S — Single Responsibility Principle (Princípio da responsabilidade única)
O — Open-Closed Principle (Princípio Aberto-Fechado)
L — Liskov Substitution Principle (Princípio da substituição de Liskov)
I — Interface Segregation Principle (Princípio da Segregação da Interface)
D — Dependency Inversion Principle (Princípio da inversão da dependência)

Princípio da Responsabilidade Única (S): Um componente deve ter apenas uma razão para ser modificado, promovendo coesão ao atribuir uma única responsabilidade a cada classe ou módulo.

Princípio Aberto-Fechado (O): As entidades de software devem estar abertas para extensão, mas fechadas para modificação, permitindo a adição de novos comportamentos sem alterar o código existente.

Princípio da Substituição de Liskov (L): Objetos de uma classe derivada devem poder substituir objetos da classe base sem afetar a corretude do programa, garantindo a consistência do comportamento.

Princípio da Segregação da Interface (I): Uma classe não deve ser forçada a implementar interfaces que não utiliza. Em vez disso, interfaces específicas para cada cliente devem ser criadas, evitando dependências desnecessárias.

Princípio da Inversão da Dependência (D): Módulos de alto nível não devem depender de módulos de baixo nível, ambos devem depender de abstrações. Abstrações não devem depender de detalhes, mas sim detalhes devem depender de abstrações, promovendo uma inversão na direção das dependências.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Explique Singleton.

A

O Singleton Pattern é um Design Pattern criacional que garante que uma classe tenha apenas uma instância, proporcionando um ponto de acesso global a ela. Este padrão é comumente usado em situações onde uma classe precisa ter exatamente um objeto, como um gerenciador de configurações, por exemplo.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Private Setters

A

Private Setters, Propriedades marcadas como private(set) podem ser acessadas fora do escopo de sua estrutura, mas apenas atribuídas dentro dela. Isso permite que o setter seja mais restritivo que o getter.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

O que é GCD? Para que serve? Como usar o Dispatch queue em um método de table ?

A

GCD significa Grand Central Dispatch, é uma biblioteca de concorrência poderosa fornecida pela Apple para gerenciar threads e filas. (Filas de executação = dispatch queues). A concorrência é fundamental para que os aplicativos aproveitem ao máximo os recursos de hardware disponíveis. No Swift, DispatchQueue.main.async é usado para executar blocos de código de forma assíncrona na thread principal (main thread). Isso é particularmente importante quando você está realizando operações que podem levar algum tempo para serem concluídas, como operações de rede, processamento intensivo ou atualizações de interface do usuário, para garantir que a interface do usuário permaneça responsiva e não congele.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly