Skip to content
IT and software
All skill profiles

iOS

Skill profile, mobile/DevOps, as of 2024.

The profile is in English, the working language of the teams.

The iOS developer is an engineer specializing in mobile development around Apple technologies and products (iPhone, iPad, etc.).

Design for mobile

Human interface Guidelines
The Human Interface Guidelines (“HIG”) offers in-depth information and UI resources for mobile platforms. The HIG is full of information that can help to create more compelling, intuitive, and beautiful experiences and design better apps.
Threading operations
Making adept use of threads can help to boost application performance. When an application is launched, it creates the first thread of execution, known as the “main” thread. The main thread is responsible for dispatching events to the appropriate user interface widgets as well as communicating with components from the system UI toolkit.
Saving and restoring state
If an app is stopped on a device, it can save its state and then restore the state when the app is launched again by the user.
Localization
Localisation is the process of customising an app to work in other languages other than the default.
Data protection
Data protection is a feature that is used to secure an app’s files and prevent unauthorised access to them.
UI automation
UI automation testing is a technique where testing processes are performed using an automation tool.

Deployment

Device testing
Device testing is the process by which a device is tested (hardware or software) for its quality to see how well it meets the requirements for which it has been developed.
Testflight / Crashlytics / Adhoc
Mobile app distribution methods
Code signing
Code signing of an app assures users that it is from a known source and the app hasn’t been modified since it was last signed.
Developer portal (AppStore / Google Play)
A developer portal (or partner portal) is where developers can sign up, receive support and manage the apps submitted to the store.

Algorithms

Big O notation
Big O notation is a mathematical notation that describes the limiting behavior of a function when the argument tends towards a particular value or infinity.
Sort algorithms
Sorting is the most common and majorly used algorithms in mobile app development. The basic idea is to arrange the data or items in a definite pattern.
Search algorithms
Search algorithm is any algorithm which solves the search problem, namely, to retrieve information stored within some data structure.
Cryptography (RSA, AES)
The basic idea of encryption is to convert data into a form in which the original meaning is masked, and only those who are properly authorized can decipher it. The AES algorithm successively applies a series of mathematical transformations to each 128-bit block of data. RSA is an asymmetric algorithm that uses a publicly known key for encryption, but requires a different key, known only to the intended recipient, for decryption.

Agile Methodologies / practices

Scrum
Scrum is a framework utilizing an agile mindset for developing, delivering, and sustaining complex products, with an initial emphasis on software development, although it has been used in other fields including research, sales, marketing and advanced technologies.
Kanban
Kanban is a workflow management method for defining, managing and improving services that deliver knowledge work. It aims to help visualize work, maximize efficiency, and improve continuously.
Iterative
The iterative model is a particular implementation of a software development life cycle (SDLC) that focuses on an initial, simplified implementation, which then progressively gains more complexity and a broader feature set until the final system is complete.
CI / CD
Continuous integration (CI) and continuous delivery (CD) is a set of operating principles, and collection of practices that enable mobile development teams to deliver code changes more frequently, reliably and automatically.
TDD
Test-driven development is a programming and testing practice that encourages developers to write better and more precise tests and code. For this, they write unit tests before the code of the respective functionality to ensure bug-free software and applications.
Code review
Code Review is a process that involves other software developers to review a particular engineer’s code in an effort to check its compliance with standards, identify errors, reveal discrepancies in the style of coding, and test the written code suitability for an objective set.

OOD principles

SOLID
SOLID is an acronym for five design principles in Object-Oriented software development intended to make software designs more understandable, flexible and maintainable.
Inversion of control (IoC)
Inversion of Control (IoC) is a design principle and is used to invert different kinds of controls in object-oriented design to achieve loose coupling.

Swift

Optionals
A type that represents either a wrapped value or nil, the absence of a value.
Error handling
Error handling is the process of responding to and recovering from error conditions in your program.
Strings
A string is a series of charactersю. Swift strings are represented by the String type. The contents of a String can be accessed in various ways, including as a collection of Character values.
Collections
Open-source package focused on extending the set of available Swift data structures.
Control Flow
Swift provides a variety of control flow statements. These include while loops to perform a task multiple times; if, guard, and switch statements to execute different branches of code based on certain conditions; and statements such as break and continue to transfer the flow of execution to another point in your code.
Functions and methods
Functions are self-contained chunks of code that perform a specific task. Methods are functions that are associated with a particular type.
Closure expressions
A closure expression creates a closure, also known as a lambda or an anonymous function in other programming languages. Like a function declaration, a closure contains statements, and it captures constants and variables from its enclosing scope.
Enumeration
An enumeration defines a common type for a group of related values and enables you to work with those values in a type-safe way within your code.
Class vs Structure
In Swift, structs are value types whereas classes are reference types.
Properties
Properties associate values with a particular class, structure, or enumeration.
Initializers
Initializers are like special methods that can be called to create a new instance of a particular type.
Functional programming: map
The map function applies a function to every item in a collection.
Functional programming: filter
The filter function simply returns values that passed an if-statement, and only if that condition resulted in true.
Functional programming: reduce
The reduce() function turns a collection into one value.
Memory management
Memory management refers to the process of managing heap memory. This means managing the life cycles of objects on the heap and making sure that these objects are freed when they are no longer needed so the memory can be reused.
Type casting
Type casting is a way to check the type of an instance, or to treat that instance as a different superclass or subclass from somewhere else in its own class hierarchy.
Extensions
Extensions add new functionality to an existing class, structure, enumeration, or protocol type.
Protocols
A protocol defines a blueprint of methods, properties, and other requirements that suit a particular task or piece of functionality.
Generics
Generics are one of the most powerful features of Swift, and much of the Swift standard library is built with generic code. Generic code enables a possibility to write flexible, reusable functions and types that can work with any type, subject to requirements that are defined.
Swift/Objective-C interoperability
Possibility to use Swift code in Objective-C and Objective-C code in Swift
Subscripts
Subscripts are shortcuts for accessing the member elements of a collection, list, or sequence.
Access Control
Access control restricts access to parts of the own code from code in other source files and modules.

Objective-C

Categories
Categories provide the ability to add functionality to an object without subclassing or changing the actual object.
Properties
Objective-C properties offer a way to define the information that a class is intended to encapsulate.
Blocks
Blocks are a language-level feature, which allow to create distinct segments of code that can be passed around to methods or functions as if they were values. Blocks are Objective-C objects, which means they can be added to collections like NSArray or NSDictionary.
KVO
Key-value observing provides a mechanism that allows objects to be notified of changes to specific properties of other objects.
Collections
Most collections in Objective-C code are instances of one of the Cocoa and Cocoa Touch collection classes, like NSArray, NSSet and NSDictionary.
Object comparison / copying / encoding & decoding
Object comparison refers to the ability of an object to determine whether it is essentially the same as another object. Copying an object creates a new object with the same class and properties as the original object. To support encoding and decoding of instances, a class must adopt the NSCoding protocol and implement its methods. This protocol declares two methods that are sent to the objects being encoded or decoded.
Protocols
Objective-C allows you to define protocols, which declare the methods expected to be used for a particular situation.
Exception Handling
The exception handling mechanisms available to Objective-C programs are effective ways of dealing with exceptional conditions. They decouple the detection and handling of these conditions and automate the propagation of the exception from the point of detection to the point of handling.
Objective-C Runtime
The Objective-C runtime is a runtime library that provides support for the dynamic properties of the Objective-C language, and as such is linked to by all Objective-C apps.
KVC
Key-value coding is a mechanism enabled by the NSKeyValueCoding informal protocol that objects adopt to provide indirect access to their properties.

iOS

Types of iOS app distribution
Apple provides three ways to distribute your application based on which developer program you are a member of: App Store or iTunes Store, In House, Ad Hoc
Application's states and transitions
Apple has defined 5 execution states of an iOS application (not running, inactive, active, background, suspended). Transition between these states are done by the OS by considering the user’s action.
Background mode, multitasking
Apps that need to run in the background to support specific types of tasks can declare their support for one or more background execution modes. Multitasking is a feature available on iOS that allows multiple applications to run and perform tasks at the same time.
Core Animation
Core Animation is a graphics rendering and animation infrastructure available on both iOS and OS X that is used to animate the views and other visual elements of the app.
Push Notifications services
Push notifications are used to push small amounts of data to devices that use the app, even when it isn’t running.
Mapkit
MapKit is a powerful API available on iOS devices that makes it easy to display maps, mark locations, enhance with custom data and even draw routes or other shapes on top.
Passbook
Apple Wallet (Wallet for short, formerly Apple Passbook) is a mobile app included with the iOS operating system that allows users to store Wallet-passes.
CoreLocation
Core Location provides services that determine a device’s geographic location, altitude, and orientation, or its position relative to a nearby iBeacon device.
Bluetooth
Bluetooth wireless technology can be integrated in the apps and hardware accessories. With Core Bluetooth framework, it’s easy for an apps to interact with the growing number of Bluetooth Low Energy (BLE) devices.
AVFoundation
AVFoundation is the full featured framework for working with time-based audiovisual media on iOS, macOS, watchOS and tvOS.
Sharing and social networks
iOS makes it easy to integrate social media interactions into the app, including sharing content and displaying an activity feed.
CoreGraphics
The Core Graphics framework is based on the Quartz advanced drawing engine. It provides low-level, lightweight 2D rendering with unmatched output fidelity.
CoreMotion
Core Motion reports motion- and environment-related data from the onboard hardware of iOS devices, including from the accelerometers and gyroscopes, and from the pedometer, magnetometer, and barometer.
SpriteKit
The SpriteKit framework makes it easy to create high-performance, battery-efficient 2D games.
GameKit
GameKit enables players to interact with friends, compare leaderboard ranks, earn achievements, and participate in multiplayer games.
OpenGL ES
OpenGL ES creates 3D and 2D graphics effects with this compact, efficient subset of OpenGL.

UIKit

Autolayout
Auto Layout dynamically calculates the size and position of all the views in the view hierarchy, based on constraints placed on those views.
Storyboards
Storyboards allow to prototype and design multiple view controller views within one file, and also create transitions between view controllers.
Size classes
Groups of screen sizes that are applied to the width and height of the device screen.
Collection View
A collection view is a way to present an ordered set of data items using a flexible and changeable layout.
Table View
A table view displays a single column of vertically scrolling content, divided into rows and sections.
Stack View
Stack views use the power of Auto Layout, creating user interfaces that can dynamically adapt to the device’s orientation, screen size, and any changes in the available space.
Text View
A text view displays multiline, styled text content.
Web View
A web view loads and displays rich web content, such as embedded HTML and websites, directly within the app.

Multithreading

GCD
Grand Central Dispatch(GCD) is used to handle multithreading in iOS
OperationQueue
A queue that regulates the execution of operations.
NSThread
A thread of execution.
Mutex
The mutex object allows the multiple program threads to use the same resource but one at a time not simultaneously.
Semaphore
Semaphore is a process synchronization tool.

Reactive programming

Reactive cocoa
ReactiveCocoa extends Cocoa frameworks with functional reactive programming inspired primitives.
RXSwift
RxSwift is the reactive programming library for iOS. It makes it easy to program dynamic apps that respond to data changes and user events.

Instruments

App Analyzing
Analyze will build a target using the static analyzer and will notify of certain types of bugs in code.
App Profiling
Profile will build and run a target on the selected device or simulator with selected Instruments tool

Wearables

Apple Watch
Apple Watch is a line of smartwatches produced by Apple Inc.

Dependencies

Cocoa pods / Carthage / Swift Package Manager
CocoaPods is a dependency manager for Swift and Objective-C Cocoa projects. Carthage is a simple dependency manager for macOS and iOS, created by a group of developers from GitHub.

Testing

Unit tests
Unit tests are automated tests that run and validate a piece of code (known as the “unit”) to make sure it behaves as intended and meets its design.
UI tests
UI testing lets you test interactions with the User interface.
Third party
A third-party app is a software application made by someone other than the manufacturer of a mobile device or its operating system.

Networking

NSURLSession
An object that coordinates a group of related, network data-transfer tasks.
Reachability
Reachability checks if an interface will support a connection, meaning the server is potentially reachable.
BSDSockets
Berkeley sockets is an application programming interface (API) for Internet sockets and Unix domain sockets, used for inter-process communication (IPC).
Third party: AFNetwroking
AFNetworking is a lightweight web request API class library based on NSURLConnection, NSOperation and other methods.
Third party: Alamofire
Alamofire is a Swift-based HTTP networking library for iOS and macOS. It provides an elegant interface on top of Apple’s Foundation networking stack that simplifies a number of common networking tasks.
Third party: Moya
Moya is a networking library focused on encapsulating network requests in a type-safe way, typically by using enumerations (e.g., enum) to provide compile-time guarantees and confidence when working with your network layer, along with added discoverability.

Security

Crypto API
The Cryptography API enables app to provide information and services in a secure way.
Keychain API
The basic idea of encryption is to convert data into a form in which the original meaning is masked, and only those who are properly authorized can decipher it. The AES algorithm successively applies a series of mathematical transformations to each 128-bit block of data. RSA is an asymmetric algorithm that uses a publicly known key for encryption, but requires a different key, known only to the intended recipient, for decryption.

DB

Core Data
Persist or cache data on a single device, or sync data to multiple devices with CloudKit.
Realm
Realm’s mobile database is an open source, developer-friendly alternative to CoreData and SQLite.
SQLite
SQLite is an open-source, zero-configuration, self-contained, stand-alone, transaction relational database engine designed to be embedded into an application.

Have a iOS engineer assessed, or find one.

Independent experts from our network check these skills in a 60 to 90 minute live interview and write a report with a recommendation.