
Der Beruf des iOS-Entwicklers ist mittlerweile sehr gefragt, gut bezahlt und möglicherweise sogar in Mode und zieht daher viele Menschen an.
Viele Kandidaten für offene Stellen kommen zu mir und meinen Kollegen, um Interviews zu führen, und ich sehe bei vielen Neuankömmlingen deutlich den Mangel an Grundkenntnissen oder einfach unsicheres Wissen darüber. Obwohl es im Internet viele Artikel, Bücher und Kurse (kostenpflichtig und kostenlos) gibt, aus denen Sie das notwendige Wissen beziehen können, ist es nicht immer leicht zu verstehen, auf welche Themen man sich konzentrieren sollte.
In diesem Artikel werde ich Informationen darüber austauschen, welche Fähigkeiten und Kenntnisse ich für einen iOS-Anfänger als wichtig erachte, versuchen zu erklären, warum sie benötigt werden, und Links zu Materialien für ihr Studium geben.
Das Material richtet sich in erster Linie an diejenigen, die mit dem Training beginnen, Lücken schließen oder ihre Bereitschaft verstehen möchten, als iOS-Entwickler zu arbeiten. Ich werde versuchen, alles in einfachen Worten zu erklären.
Ich muss sofort sagen, dass die meisten Materialien, zu denen ich Links bereitstellen werde, auf Englisch sind. Ich verstehe, dass das Lernen von Englisch am Anfang schwieriger und langsamer sein kann, aber es wird später Früchte tragen - man kann nicht immer gute relevante Materialien auf Russisch finden.
Erste Schritte
Bevor ich mich mit den folgenden Themen befasse, empfehle ich, die Grundlage vorzubereiten, nämlich den
kostenlosen CS 193P-Kurs der Stanford University zu belegen (alle Aufgaben
anzuhören und zu reproduzieren) und die
Swift-Dokumentation auf der Apple-Website zu lesen.
Es ist absolut normal, wenn Sie nicht alle Themen verstehen oder sich daran erinnern, aber Sie haben eine Basis - ein strukturiertes Grundverständnis der iOS-Anwendungen und Swift-Sprachkonstrukte des Geräts. Wenn Sie zu Beginn Zeit mit diesen Dingen verbringen, ist es für Sie viel einfacher, Wissen zu jedem Thema hinzuzufügen.
1. Auto Layout, Storyboard, Layout aus Code
Das Erstellen einer layoutbasierten Anwendungsoberfläche ist eine grundlegende Fähigkeit für einen iOS-Programmierer. Sie sollten nicht nur die Hauptkomponenten kennen, aus denen die Schnittstelle zusammengesetzt ist (UIView, UILabel, UIButton, UIImageView usw.), sondern auch, wie Sie sie auf dem Bildschirm anordnen, um die gewünschte Position und Größe auf Bildschirmen unterschiedlicher Größe zu erreichen, einschließlich beim Drehen des Gerätes. Der Einfachheit halber möchte ich drei Möglichkeiten zum Erstellen einer Schnittstelle hervorheben:
- visueller Weg durch Interface Builder
- Beschreiben Sie die Schnittstelle vollständig anhand des Codes
- Eine kombinierte Option, wenn ein Teil des Bildschirminhalts über Interface Builder eingegeben und deren Einstellungen in den Code verschoben werden.

Interface-Layout-Kenntnisse nur über den Interface Builder auf dem StoryBoard reichen möglicherweise nicht aus. Sie müssen nicht nur nicht alles über StoryBoard erledigen können, sondern auch verstehen, dass mehrere Entwickler an großen Anwendungen arbeiten und ein Versionskontrollsystem (meistens Git) verwendet wird, um die Ergebnisse ihrer Arbeit zu kombinieren. Wenn mehrere Personen an einem Code arbeiten, kann das Ergebnis ihrer Arbeit nicht immer automatisch kombiniert werden. Wenn die Schnittstelle vom Programmierer aus dem Code entworfen wurde, ist das Zusammenführen einfacher und schneller als bei der Generierung des Codes durch Interface Builder.
Um das Thema zu beherrschen, empfehle ich:
Wie kann man verstehen, dass Sie das Thema ausreichend beherrschen? Nehmen Sie eine der Apps, die Sie auf Ihrem iPhone verwenden. Sie können mit Standardmodellen beginnen, z. B. Apple Music. Versuchen Sie, einen oder mehrere Bildschirme, die Sie sehen, sowie deren Verhalten beim Drehen vollständig zu reproduzieren.

2. Lebenszyklus von ViewController
Nehmen wir zur Vereinfachung an, dass jeder Bildschirm in einer mobilen Anwendung ein ViewContoller oder vielmehr ein Nachkomme der UIViewContoller-Klasse ist. Für den iOS-Entwickler ist es wichtig zu wissen, wie der Lebenszyklus des Bildschirms funktioniert oder welche Methoden während der Vorbereitung, des Erscheinungsbilds, der Drehung, der Zerstörung und anderer Bildschirmbedingungen ausgeführt werden.

Verwandte Materialien:
3. Arbeiten Sie mit UITableView und UICollectionView
Die meisten Schnittstellen für mobile Anwendungen sind tabellenbasiert. Sie sollten in der Lage sein, dem Bildschirm eine Tabelle hinzuzufügen, Zellen vorzubereiten, die erforderlichen Protokolle zu implementieren, einen Delegaten und eine Datenquelle zuzuweisen.
Darüber hinaus ist es wichtig zu verstehen, warum Kennungen benötigt werden und was unter Wiederverwendung von Zellen zu verstehen ist.
Verwandte Materialien:
4. Grand Central Dispatch
Anwendungen sollten in der Lage sein, mehrere Probleme gleichzeitig zu lösen. Während ein Benutzer beispielsweise einen Newsfeed durchblättert, werden Daten aus dem Netzwerk heruntergeladen und die Schnittstelle wird nicht blockiert.
Grand Central Dispatch ist eines der wichtigen und ziemlich schwierigen Themen, die Sie unbedingt kennen sollten, wenn Sie für iOS programmieren möchten.
Verwandte Materialien:
5. Netzwerk, Daten von JSON empfangen
Welche Ihrer Lieblingsanwendungen funktionieren weiterhin ohne Internetverbindung? Ich denke, wenn Sie die Spiele zurückwerfen, werden Sie feststellen, dass die meisten Anwendungen mit Daten aus dem Netzwerk arbeiten. Was sollte in diesem Fall ein Anfänger für iOS-Entwickler sein? Ich denke, um eine Netzwerkanforderung zu erstellen, die Daten zu empfangen und zu verarbeiten. Kenntnisse über
URLSession sollten für den Anfang ausreichen. Dies ist der grundlegendste Ansatz, und ich empfehle zunächst, die Anwendung zu beherrschen. Es mag nicht
unangebracht sein , über die Existenz einer so beliebten Bibliothek wie
Alamofire Bescheid zu wissen, aber dies sollte nicht zu Lasten der URLSession gehen.
Am häufigsten werden Daten, die über das Netzwerk zu Anwendungen gelangen, im JSON-Format übertragen. Sie müssen in der Lage sein, diese Daten zu empfangen und zu verarbeiten, um beispielsweise eine darauf basierende Liste abzuleiten. Gleichzeitig ist es ratsam, dass Sie wissen, wie dies nicht nur mit Hilfe einer der gängigen Bibliotheken, beispielsweise
SwiftyJSON ,
funktioniert , sondern auch die Standard-Sprachwerkzeuge besitzen, die mit Codable vertraut sind.
Einiges über die Arbeit mit URLSession wird
in einem Artikel von Audrey Tam beschrieben . Es gibt viele Materialien zur Arbeit mit JSON, Sie können den
Artikel von Anand Nimje sehen .
Um das Thema in der Praxis zu beherrschen, empfehle ich, eine Anwendung mit einer Wettervorhersage zu erstellen, in der ein Eingabefeld für den Namen der Stadt vorhanden ist, eine API-Anforderung erstellt wird (
OpenWeatherMap ist geeignet) und Wetterinformationen basierend auf dem empfangenen JSON angezeigt werden.
6. Wissen schnell
Das Lesen der
Dokumentation wird hier sehr hilfreich sein. Das Erlernen von Swift kann einige Zeit dauern, aber auf dem Weg nach draußen sollten Sie die folgenden Themen mitnehmen und frei navigieren können:
- Klassen
- die Struktur
- Transfers
- Protokolle
- Sammlungen
- Methoden zum Arbeiten mit Sammlungen (Aufzählung, Sortierung, Filterung, Zuordnung, Verkleinerung usw.)
- arbeite mit Optionen und Ausnahmen
Diese Themen müssen in dem Band bekannt und beherrscht sein, für den sie in der Dokumentation angegeben sind - all dies wird sich in der Arbeit als nützlich erweisen. Es ist sehr gut, wenn Sie für jedes Thema ein Beispiel für ein Problem angeben können, das mit ihrer Hilfe gelöst werden kann.
Analysieren Sie die
Unterschiede zwischen Strukturen und Klassen sorgfältig - nicht nur, weil Ihnen diese Frage beim Interview mit hoher Wahrscheinlichkeit gestellt wird, sondern nur für Ihre Arbeit.
Neben dem Lesen der Dokumentation zu Swift können Sie sich den
Video-Marathon zu Swift von Alexei Skutarenko ansehen. Dieser
Marathon ersetzt nicht das Lesen der Dokumentation , da nicht alle Themen darin offengelegt sind und er auch vor 4 Jahren veröffentlicht wurde. Während dieser Zeit gab es geringfügige Änderungen in Swift. Alexey hat einen tollen Job gemacht, es gibt viele nützliche Materialien und Gedanken.
7. Starke und schwache Glieder, ARC, Speicherlecks
Wie kann sichergestellt werden, dass die Anwendung keine Probleme mit Speichermangel hat?
Was sind Links, welche Arten von Links gibt es? Was genau macht ARC und wie vermeidet man den Retain Cycle und worum geht es? Das Thema ist nicht kompliziert, aber äußerst wichtig. Sie können sich beispielsweise
in SwiftBook vertraut
machen .
8. Protokolle und Delegierte
Bei der Entwicklung für iOS tritt häufig eine Delegierung oder vielmehr eine Übertragung der Verantwortung von einem Objekt auf ein anderes auf. Die klassische Aufgabe ist beispielsweise eine Tabelle mit Zellen, von denen jede über die Schaltfläche "Element zu Favoriten hinzufügen" verfügt. Sie müssen in der Lage sein, ein Protokoll für diese Situation zu erstellen, einen Delegaten zu ernennen und Protokollunterstützung für ihn zu implementieren.
Verwandte Materialien:
9. Architektonische Ansätze: MVC, MVVM, MVP, VIPER
Um die Erstellung und Unterstützung von Softwareprodukten während der Entwicklung zu vereinfachen, sind sie in separate Blöcke unterteilt. Beispielsweise ist ein Block nur für die Arbeit mit Daten und der andere für das Erscheinungsbild verantwortlich. Dieser Ansatz bietet eine Reihe von Vorteilen. Sie können beispielsweise das Erscheinungsbild ändern, ohne die Logik zu berühren, oder bei Bedarf die Datenquelle ändern, ohne den Rest der Anwendung zu ändern. Offensichtlich werden diese Ansätze nicht nur in iOS verwendet, ich werde noch mehr sagen - sie kamen von anderen Plattformen hierher. Es gibt verschiedene etablierte Ansätze, um die Verantwortung zwischen verschiedenen Blöcken zu teilen. Für die Arbeit mit iOS empfehle ich ein gutes Verständnis von MVC und MVVM.
Anstelle einer normalen Erklärung der Aufteilung der Verantwortlichkeiten in der Architektur höre ich oft in Interviews etwas wie "MVC ist schlecht, weil es ein Massive View Controller ist und MVVM viel besser."
Verwandte Materialien:
10. Datenspeicherung, Kerndaten
Wie oben erwähnt, arbeiten viele Anwendungen mit Daten aus dem Netzwerk. Sie müssen in der Lage sein, diese Daten auf dem Gerät sowie die vom Benutzer eingegebenen Daten zu speichern. Zu den grundlegenden Möglichkeiten zum Speichern von Daten für einen iOS-Programmierer für Anfänger gehören meiner Meinung nach:
Diese Liste enthält keine SQLite, Realm, Firebase. Sie können auf Wunsch gemeistert werden, aber sicherlich nicht zum Nachteil der oben genannten Methoden. Wenn Sie bereits Erfahrung mit SQL haben, empfehle ich die Verwendung von SQLite unter iOS im Voraus. Es ist sehr wahrscheinlich, dass Sie diesen Ansatz für die Speicherung bequemer finden.
Verwandte Materialien:
Zusammenfassung
Ich glaube, dass es wirklich möglich ist, die oben genannten Themen gleichmäßig zu verteilen und sie ab 20 Stunden pro Woche für das Lernen zu verwenden, um alles in einem Zeitraum von 4 bis 5 Monaten von Grund auf neu zu meistern.
Mit diesem Wissensschatz können Sie Bestellungen für kleine Bewerbungen entgegennehmen oder Interviews führen. Wenn beispielsweise eine Stelle frei wäre, würden wir eine Person mit diesem Wissen in unser mobiles Team aufnehmen.
Schreiben Sie Ihre fertige Bewerbung
Ich bin sicher, dass ein iOS-Entwickler seine eigene Anwendung haben sollte. Es handelt sich um eine vollständige Anwendung, die ein notwendiges Problem oder Problem löst (es ist in Ordnung, wenn sie nur für den Autor der Anwendung gelöst wird). Während Sie Ihre Bewerbung schreiben, werden Sie auf kreative Aufgaben stoßen, um geeignete Lösungen zu finden. Auf diese Weise können Sie nicht nur das theoretische Wissen besser festigen, sondern auch Freude daran haben.
Seien Sie nicht schüchtern bei Ihren Bewerbungen, zeigen Sie sie bei den Interviews. Selbst wenn die Anwendung einfach ist, selbst wenn das Design von uns selbst erstellt wurde und sich herausstellte, dass es nicht die schönste Anwendung ist (wenn die Anwendung benötigt wird, kann die Funktionalität erweitert und das Design neu erstellt werden).
PS
Bitte teilen Sie in den Kommentaren mit, welche Themen Sie für die Entwicklung neuer iOS-Entwickler für wichtig halten