iOS Posts

The Toptal Engineering Blog is a hub for in-depth development tutorials and new technology announcements created by professional freelance software engineers in the Toptal network.
Subscribe for daily updates today and check out the wealth of technical resources published by the Toptal network.
James Cahall
iOS Centralized and Decoupled Networking: AFNetworking Tutorial with a Singleton Class

The Model-View-Controller (MVC) design pattern is great for the longevity and maintainability of an iOS application’s codebase… but you may find yourself adding similar functions to multiple models as your app grows. In cases such as networking, moving common logic out of your model classes and into singleton helper classes can be a better approach. In this article, I’ll teach you how to set up a centralized singleton networking object that, decoupled from micro-level MVC components, can be reused throughout your application.

Continue reading →
Emran Bajrami
Building Cross-platform Apps with Xamarin: Perspective of an Android Developer

Writing reusable code that can be shared across multiple platforms can make developing mobile applications a lot easier. But, how do you do that without paying the usual cost of maintainability, ease of testing, and poor user experience that comes with cross-platform mobile application development?

In this article, Toptal Freelance Software Engineer Emran Bajrami walks us through Xamarin and shows us techniques for building high-quality cross-platform apps.

Continue reading →
Sylvain Gravel
Xamarin Forms, MVVMCross, and SkiaSharp: The Holy Trinity of Cross-Platform App Development

Developing a mobile app for multiple platforms can be quite costly. Implementing the same functionalities in multiple programming languages and dealing with a plethora of unique libraries for each platform requires a massive amount of time and knowledge.

In this article, Toptal Freelance Software Engineer Sylvain Gravel talks about Xamarin and its companion technologies that let you build mobile applications for multiple platforms without compromising familiarity, performance, and uniqueness.

Continue reading →
Paul Young
A Guide to CloudKit: How to Sync User Data Across iOS Devices

Modern mobile application development requires a well thought-out plan for keeping user data in sync across various devices. This is a thorny problem with many gotchas and pitfalls, but users expect the feature and expect it to work well. For iOS and macOS, Apple provides a robust toolkit, called CloudKit API, which allows developers targeting Apple platforms to solve this synchronization problem.

In this article, Toptal Software Engineer Paul Young demonstrate how to use CloudKit to keep a user’s data in sync between multiple clients.

Continue reading →
Dino Bartošak
Swift Tutorial: An Introduction to the MVVM Design Pattern

On every new project, you have the privilege of deciding how you’ll architect the app and organize the code. But if you don’t pay attention, or you rush through coding, you risk ending up with spaghetti code. The solution? Use a proper design pattern.

In this tutorial, Toptal Software Engineer Dino Bartošak explains how to implement an MVVM design pattern on a demo Swift application.

Continue reading →
Alexander Gaidukov
An Introduction to Protocol-oriented Programming in Swift

Most modern programming languages, in the hopes of enhanced maintainability and reusability of code, offer some constructs that help the developer keep the definition of behavior and its implementation separate.

Swift takes the idea of interfaces a step further with protocols. With protocols and protocol extensions, Swift allows developers to enforce elaborate conformity rules without compromising the expressiveness of the language.

In this article, Toptal Software Engineer Alexander Gaidukov explores Swift protocols and how protocol-oriented programming can improve the maintainability and reusability of your code.

Continue reading →
Alexander Gaidukov
How to Isolate Client-Server Interaction Logic in iOS Applications

Client-server interactions play a vital role in most modern mobile applications. By leveraging available backend services these mobile applications can provide some really amazing functionalities. However, as mobile applications grow complex it becomes essential to keep the networking module as clean and maintainable as possible - separated from the rest of the application logic.

In this article, Toptal freelance software engineer Alexander Gaidukov walks us through the design of a simple networking module that allows your iOS application to interact with RESTful APIs.

Continue reading →
Nikita Tuk
The 10 Most Common Mistakes iOS Developers Don't Know They're Making

Apple’s iOS is the second-largest mobile operating system in the world. It also has a very high adoption rate, with more than 85 percent of users on the latest version. These highly engaged users have high expectations: If your app has bugs, you’ll hear about it. And once the one-star reviews start rolling in, it’s hard to recover.

In this article, Toptal Software Engineer Nikita Tuk outlines the 10 most common mistakes that developers make—and how to avoid them.

Continue reading →
Stefan Progovac
iOS Animation and Tuning for Efficiency

Smooth animations and flawless transitions are key to perceived performance in modern mobile applications. Without the right tools, tuning iOS animation for efficiency can be a challenge in itself.

In this article, Toptal engineer Stefan Progovac demonstrates the role of Instruments, a sophisticated set of performance profiling tools for iOS, discussing how they can help you understand animation performance bottlenecks and some strategies for working around them.

Continue reading →
Richard Forsythe
Demystifying iOS 9 Spotlight Search for Developers

Spotlight search in Apple iOS 9, compared to earlier versions, has been made much more prominent and personal. With suggestions from Siri and integration opportunities for third-party apps, iPhone’s search functionality is no longer limited to the scope of Apple’s own apps. In this article, Toptal engineer Richard Forsythe explores some iOS SDK functionalities that allow apps to make content available to the user via Spotlight search.

Continue reading →
Nermin Hajdarbegovic
iOS 9 Betas And WatchOS 2 For Developers

Apple’s iOS 9 and WatchOS 2 updates brings a number of novel features, including improved multitasking for iPads and a host of aesthetic tweaks. However, while iOS 9 is just an incremental update with a focus on the new iPad Pro, WatchOS 2 is not a skin-deep update. Apple has changed the WatchOS architecture and opened up a range of new possibilities for developers.

Continue reading →
Nermin Hajdarbegovic
Apple Pay And Android Pay For Developers

Today, we will be taking a look at the future of mobile payments and emerging opportunities for developers. Needless to say, with each new opportunity, developers will have to face new challenges.

However, since we are talking about money, I don’t think anyone expects a shortage of software developers eager to learn a few new tricks and get into this space.

Continue reading →
Johannes Stein
Cold Dive into React Native: A Beginner's Tutorial

The development of cross-platform mobile applications has always been a source of many challenges. Although tools like Apache Cordova and Haxe do solve some of the associated issues, they are still not the ideal solution in many cases. React Native changes that by providing the power of React.js for mobile platforms and a promise of consistent developer experience across multiple platforms.

Continue reading →
Marcin Kmiec
Simplifying RESTful API Use and Data Persistence on iOS with Mantle and Realm

A large number of modern mobile applications interact with web services in one way or another, and iOS applications are no different. Mantle (a model framework) and Realm (a mobile database) come with the promise of simplifying some of the hurdles in consuming web services through RESTful APIs and persisting data locally. In this article, Toptal engineer Marcin Kmiec shows how to build a simple iOS application using Mantle and Realm and demonstrates how this approach helps to eliminate a large amount of boilerplate code.

Continue reading →
Nermin Hajdarbegovic
Case Study: Using Toptal To Reel In Big Fish

Whether you’re an avid angler or an app developer, you may be interested in taking a closer look at the development of a fishing app, which involved some of your fellow Toptalers.

The goal was to create an app that would be truly useful in a professional fishing setting, while at the same time meeting a hard deadline. Since Fatsack Outdoors wanted to launch the app at one of the biggest fishing tradeshows of the year, the deadline was non-negotiable.

Continue reading →
Altaibayar Tseveenbayar
OpenCV Tutorial: Real-time Object Detection Using MSER in iOS

Detecting objects of interest in images has always been an interesting challenge in the realm of computer vision, and many approaches have been developed over recent years. As mobile platforms are becoming increasingly powerful, now is the perfect opportunity to develop interesting mobile applications that take advantages of these algorithms. This article walks us through the process of building a simple iOS application for detecting objects in images.

Continue reading →
Marija Efremova
A Tutorial on iOS 8 App Extensions

iOS 8 introduced a new concept called App Extensions. This new feature did not break down the walls between the applications, but it opened a few doors providing gentle yet tangible contact between some apps. The latest update gave us an option to customize the iOS ecosystem, and we are eager to see this path opening up as well.

Continue reading →
Nermin Hajdarbegovic
Toptal’s Selection Of Best Developer Blogs

You are what you read – and most Toptal members and blog subscribers are software developers. So what do you read? Where do professional developers get the latest information about how their peers work and think?

Today, we will be taking a look at a small selection of popular developer blogs frequented by Toptal developers. We’re counting on you (our readers) to expand the list in the comment section.

Continue reading →
Nermin Hajdarbegović
Biometric Security – The Key To Passwordless Authentication Or A Fad?

Passwordless authentication has been the Holy Grail of security for years, but progress has been painfully slow. Until a few years ago, the technology to implement passwordless logins on a grand scale simply wasn’t available.

However, the industry juggernaut is slowly but surely changing this. There are a few technical, legal and even ethical considerations to take into account, but be as it may, biometric, passwordless authentication is here to stay.

Continue reading →
Marco Mustapic
An iOS Developer’s Guide: From Objective-C to Learning Swift

After 6 years of improving and working on Objective-C, Apple decided to throw another challenge at developers. Once again, iOS developers will need to learn a new programming language: Swift.

Swift 1.0 is already a stable and strong development platform, which is sure to evolve in interesting ways over the coming years. It is a perfect moment to start exploring this new language, as it is the future of iOS development.

Continue reading →
Antonio Bello
iOS User Interfaces: Storyboards vs. NIBs vs. Custom Code

I often hear iOS developers ask some variant of the same key question: “What’s the best way to develop a UI in iOS: through Storyboards, NIBs, or code?”

Answers to this question, explicitly or implicitly, tend to assume that there’s a mutually exclusive choice to be made, one that is often addressed upfront, before development.

I’m of the opinion that there’s no single choice to be made. Rather, each option has its strengths and weaknesses—and there’s no need to use any one of them in isolation.

Continue reading →
Chris Fox
Why Writing Software Design Documents Matters

Congratulations, you’re an independent developer. From beginnings working maybe as a tester you’ve progressed to a team developer, then a senior developer, and now you’ve made another leap, the biggest of them all, to working directly with clients.

But where the other transitions were linear, this last one was exponential. While in the past you got your marching orders from an employer that worked with clients or was itself in the software business, now all those responsibilities that were once distributed between expert-testing, program management, etc., are all yours. And now you’re working with clients who are not in the software business; they’re in another business that needs a piece of software, and they don’t have a clear and precise vision of what they want from you. This is a far greater challenge than it appears.

Continue reading →
Ryan Wilcox
How to Work Remotely and Still Be the Best

Starting a new remote gig, be it a contract project or a full-time job, can be a little intimidating if you’re used to going into an office day after day.

But this style of employment is growing in popularity, with some very notable companies lending it their endorsements.

I’ve worked remotely for years now on projects of various scales and durations. With this post, I hope to enumerate some of the best practices that I’ve picked up for working in a variety of situations. The advice here ranges from specific recommendations for software and hardware, to tips for hitting your team’s deadlines.

Continue reading →