If to think about developing for iOS, most often in my head appears a five-digit sum for the investment: at least I need an iOS device on the latest version of the OS and Mac. If you are already developing for iOS, you probably know alternatives, but if not, maybe you will find the following useful? The post below is just for that. Here you will find pretty simple information, so if you want a hardcore, you are not in the right place!

So, we have in our hands an iOS device, in the head – the idea of ​​the application, in the heart – the desire to quickly acquire new knowledge. In front of us are three ways:

We take a Mac (more precisely, we need OS X), Xcode with the iOS SDK, Objective-C or Swift, we make a project, and at the output we get the real, “native”, iOS application, which you can even submit in the App Store, and hope that our small development brings people joy.

We take Mac or Windows machine, select a framework that allows to write mobile applications in more familiar languages ​​(JavaScript, C #). The framework will take care of how our code will be executed on the device: to ensure execution with our code, the code will be linked runtime mechanism, the tasks of which, among other things, include the translation of the programming language calls to the API of the mobile platform. The advantage of the approach is a certain independence from a specific mobile platform (with which only runtime itself connects us), but the minus is that it has a lower speed than the “native” application.

We take Notepad or any text file editor, build a web page, properly equip it, and on the output receive a web application that, in fact, will run in a full-screen browser window (like a real platform application – without a browser address row), but it will work, of course, with the speed and responsiveness of a regular web page. First of all, this will be seen in the absence of a normal Internet connection, however, you must agree, even this option is sometimes convenient. A web application, by the way, has the advantage that you do not need to send a page to the App Store for users to access it, just give people its URL and offer to add it to your home screen.

Way of Apple

The way of a real iOS developer depends on the ideas of Apple. A fresh SDK, a fresh version of Xcode, Apple documentation based on Apple technologies, developer forums about Apple technologies – if to think about it, what else is needed to create a great application, except of this and a bit of time? The benefit is obvious: the development goes the closest to the platform and the ideology of Apple, using all the innovations offered by Apple in the current (and future) iOS API, so the constant study of the new brings more good than bad.

Apple regularly announces new features. At the WWDC 2017 developer conference were shown new SDK and new version of the Xcode development environment. The list of changes is quite extensive (especially in anticipation of the iOS 11 release):


The text editor in Xcode was rewritten to Swift, making it more reliable and faster. Can this be felt? Yes! The syntax highlighting works (almost) instantly, opening and navigating the file now without noticeable delays and error messages no longer overlap the source code. In beta, everything looks very nice, let’s see what awaits us in the release!

Xcode has Markdown support. The markup can be used for the code documentation, and such functionality, at first glance, quite noticeably facilitates reading the code, especially someone else’s:

The editor, by the way, learned to highlight blocks of code, what is convenient for the studying of a large amount of code.

Another important feature of Xcode 9 is code refactoring in Swift, Objective-C, Objective-C ++, C. Refactoring allows you to rename classes, variables, and also divide methods into smaller ones.

Of the less prominent, but useful features, we can name:

  • A new build system (by the way, written on Swift);
  • GitHub support;
  • UI debugger started showing UIViewController;
  • More checks (for example, main thread API checker and undefined behavior tracking);
  • Parallel launch of tests on different devices and simulators, UI tests of several applications;
  • Wireless debugging on multiple devices to test applications for iPad and iPhone.