I've seen some crazy interview processes for iOS developers. Interviews without a single technical question. Interviewers who don't know iOS development. Interviews that seem more like personality tests.
These mistakes happen because folks don't know what skills are important to iOS development. A good interview tests job skills. Measure the skills and you'll hire great developers. Measure weird stuff and who knows?
Every mobile app developer needs some level of design skills. The Apple Watch, Apple TV, iPhone, and iPad are all very visual devices. Even the app stores are visual: the icon and screenshots are the most prominent elements in the listings.
If you have a designer dedicated to your app, design skills become less important than communication and collaboration skills. Even so, the developer needs some basic knowledge. A developer should be able to tweak the design of an app without breaking its look and feel.
In addition, the developer should understand how alpha transparency works, the various resolutions needed to support retina devices, and so on.
User Experience (UX) is the part of design that deals with how the user works with the app rather than just the visual appearance. Talented iOS developers should understand the basic principals around app UX: how users navigate the app, expectations for screen layout, how to choose the various UI components to solve different problems, and so on.
A senior app developer should be able to sketch out an app wireframe to solve a particular workflow through an app.
An experienced app developer should be familiar with writing the app-side code for communicating with a RESTful web service.
Every iOS developer should be familiar with how to safely execute tasks off of the main thread. They should be able to explain why this is necessary and also how to prevent race conditions and deadlock.
A talented iOS developer should be familiar with the Instruments tools for investigating performance issues. In addition, they should have ideas on how one typically fixes these issues.
These days all iOS developers should be familiar with using ARC for memory management. This includes knowing how to prevent retain-cycles, and how to avoid segmentation faults. Depending on your application, knowledge of auto-release variables and auto-release pools may be important.
IOS developers should be familiar with the MVC (model-view-controller) pattern, KVO (key value observing) and it's dangers, the delegate pattern and Notifications. They should also know the difference between views and view controllers.
Most iOS developers these days should be familiar with auto layout, both using storyboards or nibs, and in code. Some topics to explore are how to line up text labels, centering objects, dealing with internationalization and localization.
The a growing number of iPhone, iPad, Apple TV and Apple Watch projects are written in Swift, or a combination of Objective-C and Swift. Even if your project isn't using Swift yet, more and more common iOS libraries are written in Swift. There is some friction to learning Swift, but in my experience Objective-C developers can learn the basics in a few months. If you're starting a new project, there is a good chance that Swift is a language you'll be using.
Objective-C still makes up a large percentage of iOS apps. Unless you're starting from scratch or already have a 100% swift app, Objective-C is still a critical skill. A lot of the documentation you'll find online (aside from Apple's) is still written in Objective-C. Due to it's interesting syntax, learning Objective-C is probably a little more intimidating than learning Swift. Since every iOS app takes advantage of the Objective-C runtime, Objective-C knowledge is still important for an iPhone developer.
Developer interviews tend to spend a lot of time focusing on data structures, algorithms, and big O notation. The reason these questions are so common is that they are the backbone of computer science curriculum. They're easy to ask and have well-understood correct answers — unless you mess them up, which happens more frequently that you'd imagine.
For many app developer jobs, I think such a focus on data structures and algorithms is a mistake. The majority of non-game apps are interfaces to web services on the internet. Very few of those apps do processing on large data sets. On the few occasions where performance is an issue, every common data structure and algorithm can be found described and implemented online — if not built in to the Foundation Framework on iOS.
If you need an app that isn't processing vast quantities of data, do you really need someone who understands more than the basics of data structures and algorithms? Possibly not. But you'll certainly need someone who has expertise in developing iOS apps.
On the other hand, if your app is processing huge quantities of data, for example, routing paths on a map, then you will need an algorithm ace.
It's worth debating how difficult you need this portion of your interview to be. The more difficult you make it, the more difficult it will be to hire an app developer.
A serious business needs to protect their investment in code by using version control (sometimes called source control). For that reason, most iOS developers should be familiar with a distributed version control system like git or Mercurial. They should also be familiar with using collaborative version control tools like GitHub. Likewise the developer should be very familiar with peer code review (see below).
It's probably not wise to spend too much of your limited interview time getting into source control details. However, this is a good indication of the types of teams the developer has worked on in the past. A developer with no version control experience probably isn't very experienced. That's OK.
Peer code reviews help maintain and improve the level of quality in your app. Like source control, experience and knowledge in this area isn't critical in junior developers. The more senior app developers should definitely have good practices in this area.
Every app developer should be familiar with the basic debugging tools present in Xcode. They should be able to set breakpoints, step through code, and probe the contents of variables.
More experienced developers will be familiar with the interface debugger, Instruments, and conditional breakpoints.