< browse all profiles
Expertise

iOS

Description

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

Skills

Design for mobile

Expand/colapse
Developing for mobile requires specific design considerations.

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.

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
Localization is the process of customizing 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 unauthorized access to them.

Deployment

Expand/colapse
Deployment is an important aspect of the software development process. Deployment is the mechanism through which applications, modules, updates, and patches are delivered from developers to users.

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.

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

Expand/colapse
A programming algorithm is a procedure or formula used for solving a problem.

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.

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.

Patterns

Expand/colapse
In software engineering, a software design pattern is a general, reusable solution to a commonly occurring problem within a given context in software design.

Creational (abstract factory / factory / Builder / Singleton / Lazy / etc.)

Creational design patterns are concerned with the way of creating objects. These design patterns are used when a decision must be made at the time of instantiation of a class (i.e. creating an object of a class).

Structural (adapter / wrapper / Bridge / Decorator / Proxy / Fascade / etc.)

Structural design patterns focus on, how the classes inherit from each other and how they are composed of other classes. Structural patterns use inheritance to compose interface or implementations.

Behavioral (command / iterator / observer / template / etc.)

Behavioral design patterns have focused on the assignment of responsibilities between objects, or, encapsulating behavior in an object and delegating requests to it.

Architectural (DI / MVC / MVP / MVVM / Clean architecture)

Architecture design patterns have focused on the architecture of the application and how responsibilities between different modules/components can be defined based on requirements.

Creational (abstract factory / factory / Builder / Singleton / Lazy / etc.)
Creational design patterns are concerned with the way of creating objects. These design patterns are used when a decision must be made at the time of instantiation of a class (i.e. creating an object of a class).
Structural (adapter / wrapper / Bridge / Decorator / Proxy / Fascade / etc.)
Structural design patterns focus on, how the classes inherit from each other and how they are composed of other classes. Structural patterns use inheritance to compose interface or implementations.
Behavioral (command / iterator / observer / template / etc.)
Behavioral design patterns have focused on the assignment of responsibilities between objects, or, encapsulating behavior in an object and delegating requests to it.
Architectural (DI / MVC / MVP / MVVM / Clean architecture)
Architecture design patterns have focused on the architecture of the application and how responsibilities between different modules/components can be defined based on requirements.

Agile Methodologies / practices

Expand/colapse
Development methodologies and practices are about how to build your software.

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.

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.

OOD principles

Expand/colapse
Object-oriented design is the process of planning a system of interacting objects for the purpose of solving a software problem.

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.

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

Expand/colapse
Swift was introduced in 2014 as an Apple programming language. It was eventually available for development in Xcode the following year.

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.

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.

Objective-C

Expand/colapse
Objective-C was the first programming language by Apple to support mobile applications on its platform. It’s an OO (object-oriented) language that uses syntax from C and the OO aspects of SmallTalk.

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.

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.

iOS

Expand/colapse
The Foundation framework provides a base layer of functionality for apps and frameworks, including data storage and persistence, text processing, date and time calculations, sorting and filtering, and networking.

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.

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.

UIKit

Expand/colapse
The UIKit framework provides the core objects that you need to build apps for iOS and tvOS. You use these objects to display your content onscreen, to interact with that content, and to manage interactions with the system. Apps rely on UIKit for their basic behavior, and UIKit provides many ways for you to customize that behavior to match your specific needs.

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 leverage 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.

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.

Multithreading

Expand/colapse
Concurrency and multithreading are a core part of iOS development.

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.

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

Expand/colapse
Reactive programming is an asynchronous programming paradigm oriented around data streams and the propagation of change. In this case, reactive programming allows changes to be modeled as they propagate through a circuit.

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.

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

Expand/colapse
Developers need to stay productive to create better quality apps.

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

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

Expand/colapse
Wearables, as the name suggests, are gadgets that can be worn and usually have smart sensors and are connected to the internet for data exchange.

Apple Watch

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

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

Dependencies

Expand/colapse
Dependency is a broad software engineering term used to refer when a piece of software relies on another one.

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.

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

Expand/colapse
Users interact with your app on a variety of levels, from pressing a button to downloading information onto their device. Accordingly, you should test a variety of use cases and interactions as you iteratively develop your app.

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.

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

Expand/colapse
The majority of apps require networking to connect to external services and data sources.

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.

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.

Security

Expand/colapse
Secure the data your app manages, and control access to your app.

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.

Crypto API
The Cryptography API enables app to provide information and services in a secure way.
Keychain API
Keychain Services securely store small chunks of data on behalf of the user.

DB

Expand/colapse
A database is a structured collection of data.

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.

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.
we are loading comments...
Join discussion