
A profissão de desenvolvedor iOS agora é bastante procurada, bem paga e possivelmente até na moda, e, portanto, atrai muitas pessoas.
Muitos candidatos a vagas abertas vêm a mim e aos meus colegas para entrevistas, e vejo claramente entre muitos recém-chegados a falta de conhecimento básico ou simplesmente um conhecimento incerto. Embora existam muitos artigos, livros e cursos (pagos e gratuitos) na Internet, dos quais você pode obter o conhecimento necessário, nem sempre é fácil entender quais tópicos devem ser concentrados.
Neste artigo, compartilharei informações sobre quais habilidades e conhecimentos considero importantes para um desenvolvedor iniciante em iOS, tentarei explicar por que eles são necessários e fornecer links para os materiais de estudo.
O material é direcionado principalmente para aqueles que desejam iniciar o treinamento, preencher as lacunas ou entender sua vontade de trabalhar como desenvolvedor de iOS. Vou tentar explicar tudo em palavras simples.
Devo dizer imediatamente que a maioria dos materiais aos quais fornecerei links estão em inglês. Entendo que aprender inglês pode ser mais difícil e mais lento no começo, mas dará frutos mais tarde - nem sempre é possível encontrar bons materiais relevantes em russo.
Primeiros passos
Antes de me aprofundar nos tópicos a seguir, recomendo preparar a base, ou seja, fazer (ouvir e reproduzir todas as tarefas) o
curso gratuito CS 193P da Stanford University e ler a
documentação do
Swift no site da Apple.
É absolutamente normal se você não entender ou se lembrar de todos os tópicos, mas terá uma base - entendimento básico estruturado dos aplicativos iOS do dispositivo e das construções de linguagem Swift. Ao dedicar tempo a essas coisas no início, será muito mais fácil adicionar conhecimento sobre cada tópico.
1. Layout automático, Storyboard, layout do código
Criar uma interface de aplicativo baseada em layout é uma habilidade básica para um programador iOS. Você deve conhecer não apenas os principais componentes dos quais a interface está montada (UIView, UILabel, UIButton, UIImageView etc.), mas também como organizá-los na tela para alcançar a posição e o tamanho desejados em telas de tamanhos diferentes, incluindo ao ligar o dispositivo. Para simplificar, destacaria três maneiras de criar uma interface:
- visual através do Interface Builder
- descreva completamente a interface a partir do código
- uma opção combinada, quando parte do conteúdo das telas é inserida por meio do Interface Builder e suas configurações são movidas para o código.

As habilidades de layout de interface apenas por meio do Interface Builder no StoryBoard podem não ser suficientes para você. Além do fato de que você não pode fazer tudo através do StoryBoard, é necessário entender que vários desenvolvedores estão trabalhando em aplicativos grandes, e um sistema de controle de versão (na maioria das vezes é o Git) é usado para combinar os resultados de seu trabalho. Quando várias pessoas trabalham em um pedaço de código, o resultado do trabalho nem sempre é possível combinar automaticamente. Se a interface foi projetada pelo programador a partir do código, a fusão é mais fácil e rápida do que quando o código foi gerado pelo Interface Builder.
Para dominar o tópico, recomendo:
Como entender que você domina o tópico suficientemente? Pegue qualquer um dos aplicativos que você usa no seu iPhone. Você pode começar com os padrão, por exemplo, o Apple Music. Tente reproduzir totalmente uma ou duas telas que você vê, bem como o comportamento delas ao virar.

2. Ciclo de vida do ViewController
Por uma questão de simplicidade, suponha que cada tela em um aplicativo móvel seja um ViewContoller, ou melhor, seja um descendente da classe UIViewContoller. É importante que o desenvolvedor do iOS saiba como o ciclo de vida da tela funciona, ou melhor, quais métodos serão executados durante a preparação, aparência, rotação, destruição e outras condições da tela.

Materiais relacionados:
3. Trabalhe com UITableView e UICollectionView
A maioria das interfaces de aplicativos móveis é baseada em tabela. Você deve poder adicionar uma tabela à tela, preparar células, implementar os protocolos necessários, atribuir um delegado e uma fonte de dados.
Além disso, é importante entender por que os identificadores são necessários e o que se entende por reutilização de células.
Materiais relacionados:
4. Expedição Grand Central
Os aplicativos devem ser capazes de resolver vários problemas simultaneamente. Por exemplo, enquanto um usuário percorre um feed de notícias, os dados são baixados da rede e a interface não é bloqueada.
O Grand Central Dispatch é um dos tópicos importantes e bastante difíceis que você definitivamente deve saber se vai programar para iOS.
Materiais relacionados:
5. Rede, recebendo dados de JSON
Quais dos seus aplicativos favoritos continuam a funcionar sem uma conexão à Internet? Eu acho que se você jogar os jogos de volta, verá que a maioria dos aplicativos funciona com dados da rede. O que, nesse caso, deve ser capaz de desenvolvedor iniciante em iOS? Eu acho que para criar uma solicitação de rede, receba e processe os dados. O conhecimento do
URLSession deve ser suficiente para começar. Essa é a abordagem mais básica, e eu recomendo antes de tudo dominar a aplicação dela. Pode não estar fora do lugar saber sobre a existência de uma biblioteca popular como a
Alamofire , mas isso não deve ser prejudicial à URLSession.
Na maioria das vezes, os dados que chegam aos aplicativos pela rede são transmitidos no formato JSON. Você precisa receber e processar esses dados, por exemplo, para derivar alguma lista com base neles. Ao mesmo tempo, é aconselhável que você saiba como fazer isso não apenas com a ajuda de uma das bibliotecas populares, por exemplo,
SwiftyJSON , mas também possua as ferramentas de linguagem padrão, esteja familiarizado com o Codable.
Um pouco sobre o trabalho com o URLSession é descrito
em um artigo da Audrey Tam . Existem muitos materiais sobre como trabalhar com o JSON; você pode ver o
artigo de Anand Nimje .
Para dominar o tópico na prática, eu recomendo fazer um aplicativo com uma previsão do tempo, na qual existe um campo de entrada para o nome da cidade, uma solicitação de API é criada (o
OpenWeatherMap é adequado) e as informações do tempo são exibidas com base no JSON recebido.
6. Conhecimento Rápido
A leitura da
documentação ajudará muito aqui. O Learning Swift pode levar algum tempo, mas, na saída, você deve levar o seu tempo livre e navegar pelos seguintes tópicos:
- aulas
- a estrutura
- transferências
- protocolos
- coleções
- métodos de trabalho com coleções (enumeração, classificação, filtragem, mapa, redução, etc.)
- trabalhar com opções e exceções
Esses tópicos precisam ser conhecidos e dominados no volume ao qual são fornecidos na documentação - tudo isso será útil no trabalho. É muito bom que, para cada tópico, você possa dar um exemplo de um problema que possa ser resolvido com a ajuda deles.
Analise cuidadosamente as
diferenças entre estruturas e classes - não apenas porque a pergunta será respondida na entrevista com alta probabilidade, mas apenas necessária no seu trabalho.
Além de ler a documentação do Swift, você pode assistir à
maratona de vídeos do Swift de Alexei Skutarenko. Esta
maratona não substitui a leitura da documentação devido ao fato de que nem todos os tópicos são abordados nela, e foi publicada há 4 anos e, durante esse período, houve pequenas alterações no Swift. Alexey fez um trabalho tremendo, há muitos materiais e pensamentos úteis.
7. Links fortes e fracos, ARC, vazamentos de memória
Como garantir que o aplicativo não tenha problemas com falta de memória?
O que são links, quais são os tipos de links? O que exatamente o ARC faz, e como evitar o ciclo de retenção, e o que é isso tudo? O tópico não é complicado, mas é extremamente importante. Você pode se familiarizar, por exemplo,
no SwiftBook .
8. Protocolos e delegados
Ao desenvolver para iOS, você frequentemente encontrará delegação, ou melhor, transferência de responsabilidade de um objeto para outro. Por exemplo, a tarefa clássica é uma tabela com células, cada uma com o botão "adicionar item aos favoritos". Você deve ser capaz de criar um protocolo para esta situação, nomear um delegado e implementar o suporte ao protocolo para ele.
Materiais relacionados:
9. Abordagens arquitetônicas: MVC, MVVM, MVP, VIPER
Para facilitar a criação e o suporte de produtos de software durante o desenvolvimento, eles são divididos em blocos separados. Por exemplo, um bloco é responsável apenas pelo trabalho com dados e o outro pela aparência. Essa abordagem possui várias vantagens, por exemplo, você pode alterar a aparência sem tocar na lógica ou, se necessário, alterar a fonte de dados novamente, sem alterar o restante do aplicativo. Obviamente, essas abordagens são usadas não apenas no iOS, vou dizer mais - elas vieram aqui de outras plataformas. Existem várias abordagens bem estabelecidas para compartilhar responsabilidades entre diferentes blocos; para trabalhar com o iOS, recomendo um bom entendimento do MVC e MVVM.
Em vez de uma explicação normal da divisão de responsabilidades na arquitetura, ouço frequentemente em entrevistas, algo como "MVC é ruim porque é um Massive View Controller e MVVM é muito melhor".
Materiais relacionados:
10. Armazenamento de Dados, Dados Principais
Como dissemos acima, muitos aplicativos trabalham com dados da rede. Você precisa salvar esses dados no dispositivo e salvar o que o usuário digitou. O conjunto básico de maneiras de armazenar dados para um programador iniciante do iOS, na minha opinião, inclui
Não há SQLite, Realm, Firebase nesta lista. Eles podem ser dominados, se desejado, mas certamente não em detrimento dos métodos acima. Se você já tem experiência em trabalhar com SQL, recomendo usar o SQLite no iOS com antecedência, é muito provável que você ache essa abordagem de armazenamento mais conveniente.
Materiais relacionados:
Sumário
Acredito que, distribuindo uniformemente os tópicos acima e dedicando-os ao estudo de 20 horas por semana, é realmente possível dominar tudo do zero em um período de 4-5 meses.
Com esse conhecimento, você pode começar a receber pedidos de aplicativos pequenos ou a fazer entrevistas. Por exemplo, se houvesse uma vaga, levaríamos uma pessoa com esse conjunto de conhecimentos para a nossa equipe móvel.
Escreva seu aplicativo finalizado
Estou certo de que um desenvolvedor de iOS deve ter seu próprio aplicativo. Estamos falando de um aplicativo completo que resolve algum problema ou problema necessário (tudo bem se resolver apenas para o autor do aplicativo). No processo de redação do aplicativo, você encontrará tarefas criativas para encontrar soluções adequadas, além de consolidar melhor o conhecimento teórico, além de proporcionar prazer.
Não tenha vergonha de suas aplicações, mostre-as nas entrevistas. Mesmo que o aplicativo seja simples, mesmo que o design tenha sido feito por nós mesmos e não seja o aplicativo mais bonito (se o aplicativo for necessário, a funcionalidade poderá ser expandida e o design poderá ser renovado).
PS
Informe nos comentários quais tópicos você considera importantes para o desenvolvimento de novos desenvolvedores do iOS