Over a million developers have joined DZone.

iOS App Development: From Coding Noob to Rockstar

DZone's Guide to

iOS App Development: From Coding Noob to Rockstar

This article describes the path to iOS development enlightenment, or at least becoming a developer who’s in demand. It starts with where to learn the basics and goes into some ninja level topics you’ll need to master.

· Mobile Zone
Free Resource

Getting Started With Coding

In order to start developing iOS apps, you’ll need to have at least some coding knowledge. If you don’t have any, well, you need to start learning. You can start by looking at the courses offered at following online educational platforms:

The good news is that most of the above offer many of their courses for free so you don’t need to invest a fortune just to get started. While free courses do indeed vary in quality, you might be surprised that much of the free content is really good.  

Just make sure that you sign up for anything related to Objective-C, and/or Swift which are the programming languages you’ll be using for iOS development. Other languages like Python or Ruby are cool to know, just not for iOS coding 

You’re gonna need to invest a “considerable” amount of time learning. At least 2-6 months to be realistic in order to understand the essentials, and to be able to call yourself a “Neophyte coder”

iOS: The Beginnings

(Spoiler: You need a Mac)

If you want to use your Windows or Linux PC to code iOS apps, I’m sorry to say that Apple’s development tools only run on Macs. (Yes I know there are workarounds, but that’s waaay beyond the discussion of this guide).

In case you’re thinking “I could use some third-party cross-platform development tool like Xamarin and work on my Win/Linux.” – Sorry to disappoint, but the Xcode and Apple SDKs agreement requires you to use Apple branded hardware. Also, without a Mac, the rest of this guide won’t help you much.

After you’ve acquired some coding knowledge, from one of the courses above or elsewhere, you’re ready to get started.

First of all, make yourself very familiar with XCode.

XCode is Apple’s IDE (Integrated Development Environment),  which is the graphical interface you will be using to develop your iOS (or Mac) apps. XCode is free to download and you can get it from the link above.

Next, you want to start developing with Swift . Xcode supports both Objective-C and Swift to develop apps. Objective-C was the original programming language iOS apps started with and is still fully supported today. Swift has been supported since iOS 8 and Apple is now heavily pushing Swift, so if you don’t know either of them, it makes more sense to start making apps with Swift.

Some great guides on the topic of Swift can be found here:

You’ll also need to learn the official Apple API capabilities and technical details. These will help you in the long run when adding functions to your apps. Most of the information you will need can be found in the iOS Developer library.

Read the Fineprint or Your App Might be Rejected

Apple has tons of rules and more rules about what you can and can’t do in iOS apps. This includes everything from design guidelines to private data and everything in between. If your app deviates too much from the official Apple guidelines it could easily be rejected. The Apple App store review is a common issue for many developers.

You’ll need to educate yourself on the  guidelines for app development, including:

Some additional guidelines that might be applicable to your app are:

The Two-pronged Attack of the iOS developer: Making Money and Gaining Reputation

After quite a lot of learning and coding you now want to make money from your app, and also get the professional acknowledgment you deserve as a future iOS development rockstar 

First of all, here are a few good guides on promoting and monetizing your app:

  • 10 best ways to promote your iOS app by ShoutMeLoud This is an awesome overview of the most common marketing techniques to generate early awareness for your app, read it and implement them all.
  • 9 ways to monetize your App Having users is one thing, getting money out of your app is another, E-String gives you 9 examples of monetization strategies which are easy to implement for your app.
  • App Store Marketing Guidelines: Who would have expected more guidelines by Apple, but make sure that your marketing strategies are aligned with the rules Apple is setting, else no distribution = no money.
  • 10 Growth Hacks for Mobile Apps A simple presentation with powerful insight in hacking the growth of your app. Growth is everything if you are planning to get VC money, mark my words.

If you are still struggling with promotion and monetization, there are communities like Quora,Inbound.orgOnlineGeniuses.com, and GrowthHackers.com which can help you, and most probably will if you just ask nicely.

But you’re not in this just for the money, right? 

You want to become an uber coder, a master of the craft, a respected and well-known iOS developer so you’ll need to learn how to code fast, clean and smart, and master your coding craft.

10  Tools You Need to Master in Order to Stand Out as an App Developer

Warning: Advanced iOS development content

  1. #pragma

#pragma declarations in Objective-C were originally utilized to make source code compatible between different compilers.  Today, it’s a mark of craftsmanship among the Xcode-savvy coders.

#pragma borders the line between comment and code. It works as a preprocessor directive and evaluates at compile-time. But the way #pragma is utilized will not change the runtime performance of the application.

These declarations are used by Xcode to complete two tasks: to organize code and inhibit compiler warnings.

How you organize your code says a lot about you and your work. If you don’t want to seem incompetent and careless and make your project difficult to collaborate on, respect the conventional forms and pay attention to internal consistency. Develop good habits with #pragma mark.

In some situations, you can’t avoid compiler warnings. If you are positive that a particular compiler or static analyzer warning should be obstructed, #pragma can help.

  1. @

@ or “at” sign are as crucial for understanding Objective-C’s gestalt. It means “shorthand for something to do with Objective-C”. This suggests that @ has a wide variety of uses, from staples like @interface and @implementation to the rare ones like @defs and @compatibility_alias.

On some occasions, @interface declarations reference an external class in a property or as a parameter type.

@ is a very powerful character that embodies mechanisms of the language and the underlying design. Learning all the ways to use can bring many benefits, including less chance of cyclical references and shorter compile times.

  1. BOOL

To encode truth value, Objective-C identifies BOOL. BOOL is a type definition of a signed char, with the commands YES and NO to signify true and false.

These values are used in Boolean values are used in if or while statements to perform logic or repeat execution. When a conditional statement is being evaluated, the value 0 is “false”, and everything else is considered “true”.

In Objective-C, you can use the BOOL type for parameters, properties, and instance variables dealing with truth values. When you need to assign literal values, use the YES and NO macros.

  1. Unit Testing

Unit Testing is a tool that is supposed to make us better at our jobs of producing robust, maintainable software. Before, automated unit testing for Objective-C was a privilege, but Travis CIit available to the masses.

Write code to build environments which exercise a specific behavior of a set method, function, class, or feature. Variables are secluded in a scientific modus, to test assumptions with lucid atomicity.

As Objective-C becomes more collaborative and with the growing participation in the open source community, automated testing will become necessary.

  1. Instabug

Instabug is an in-app feedback mechanism and a bug reporting tool. Since iOS apps require high standards and iOS users don’t tolerate bugs well, this tool can help you avoid bad reviews. You don’t need to contact the users anymore and as for feedback; you can just download this software development kit.

Instabug also offers a rich tool for customization, allowing you to choose the colors of your feedback information. Just get Instabug and let it work for you to avoid contacting beta testers and bad reviews. (In case you were wondering, I don’t work for them or know anyone personally at the company. It’s just a cool tool).

  1. WatchBuild

When you have uploaded a new binary from Xcode to iTunes Connect, you must wait until submitting it to the App Store until it’s done processing. Since this could take for hours, you might forget to check if the build is ready.

To avoid this, get WatchBuild. WatchBuild is a simple open source tool that sends you a notification as soon as your build is successfully processed. This tool doesn’t replace deliver or pilot, but it’s helpful. You can click simply click in the notification to open your build on iTunes Connect.

  1. xctool

xctool is a tool that will redefine the build process and provide a foundation for the next generation of tooling and integration. It is a replacement for Xcode build.

The first thing that Apple customers are excited about is the gorgeous, colorized output of xctool. This tool has absolutely nailed it with the design. Also, each part of the build process is cleverly organized and visually appealing.

But xctool’s splendor is not just visible on the surface: build progress can also be reported in formats that can be read by other tools.

  1. Intelligent code editor / Intelligent code completion

For advanced code completion, refactoring, and code analysis, the Intelligent code editor is at the core of JetBrains AppCode (premium tool). This powerful code editor will make you more productive and help develop iOS apps more easily.

  1. Memory Monitor

This is a tool that can reveal whether there are any undesirable garbage collections (GC) that are causing problems in app performance. Memory Monitor quickly identifies the potential of memory problems and leaks, it is easy to use and interpret. Yet, it doesn’t provide information that indicates where the problems are located in the code or which objects are causing the problems.

  1. Heap Viewer and Allocation Tracker (XCode Performance Tools)

Heap Viewer is a tool that is a good addition to Memory Monitor since this one actually identifies the object types that are causing the memory leaks. Heap viewer samples data whenever a garbage collection event happens. It provides snapshots of many objects distributed by type.


Allocation Tracker aids recognizing memory problems through recurring allocation and deallocation patterns. It is useful in combination with Heap Viewer for purposes of tracking down memory leaks. This tool displays when and where your code allocates object types and size, allocating thread, and stack traces.

Summary: From Noob to Ninja

From zero to hero, we’ve shown you the resources you need on your path. Ultimately, it’s up to you to go down it. Your time and dedication and last but not least creativity and grit will make or break your app developer career.

The app economy could potentially reach 101 billion USD per year by 2020, so the marketing is on track to continue growing for quite a while, a good projection for anyone investing time and efforts to become a part of this market.

The soaring demand for app developers is not yet covered, and the rates for app developers start with 50 USD / hour, which makes the time investment worthwhile.

We tried to cover as much as possible, but there are surely some tools or tips we didn’t mention so feel free to provide your own favorite resources in the comments.

If you have any open questions, feel free to ask in the comments and we will try to answer as soon as possible.

ios ,learning ,mobile

Published at DZone with permission of Ophir Prusak, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}