The app market is constantly evolving, and success stories are large enough to capture anyone's attention. Do you think you have the next big idea for an iPhone app? It's easier to create than you might think. While you'll need to learn some coding, most of the design work can be done graphically. Building an app requires time, learning, and patience, but who knows, you could create the next Flappy Bird phenomenon! See Step 1 below to get started.
Steps
Set Up Your Development Environment

Download and install Xcode. Xcode is the development environment where all iPhone apps are created. Xcode can be downloaded for free from Apple, but it requires OS X 10.8 or later to install. There is no official way to run Xcode on a Windows or Linux machine. This means that if you want to develop an iPhone app but don't have a Mac, you'll need to purchase one.
- To develop apps for iOS 8, you'll need Xcode 6.0.1 and the iOS 8 SDK, both available from Apple. The iOS 8 SDK includes a significant number of new APIs allowing you to create all kinds of new app experiences, including iCloud and Touch ID integration.
- To develop apps for iOS 10, you'll need Xcode 8 and the iOS 10 SDK, both available from Apple. This version of Xcode brings significant changes to the Swift language and SDK tools that you’ll need to be aware of, but the good news is that there will be no “breaking changes” to the Swift language after this version.

Install a good text editor program. While you can write code entirely within Xcode, you’ll find that working with large chunks of code is much easier if you use a dedicated text editor designed specifically for programming syntax. TextMate and JEdit are two popular choices.

Install a vector graphics program. If you plan to design and create your own artwork for your app, you'll need to install a program capable of creating vector graphics. Vector graphics can be scaled without losing clarity, which is essential for creating an aesthetically pleasing app. Popular vector programs include CorelDraw, Adobe Illustrator, Xara Designer, and Inkscape. One good, free vector graphic program is DrawBerry. It’s not as powerful as the professional programs, but it’s great for first-time users or for those who don’t want to pay for something they’ll only use once.

Get familiar with Objective-C. Objective-C is the programming language used to build functionality within iPhone apps. It handles data and object manipulation. Objective-C originates from the C language family and is an object-oriented language. If you have a basic understanding of C or Java, much of Objective-C will be easy to grasp.
- A newer option is to build apps with the Swift language, which came after Objective-C. Swift has a more user-friendly syntax and feels more modern.
- While you can build a basic app without knowing Objective-C, you can’t implement advanced functionality without writing code in it. Without Objective-C, all you can do is navigate between screens.
- There are plenty of tutorials available online, as well as numerous books dedicated to Objective-C. If you’re serious about iPhone app development, you’ll be satisfied having a few useful resources at hand.
- Popular online Objective-C communities include the Apple Developer Forums, the iPhoneSDK Google Group, and StackOverflow.

Consider outsourcing app development. If you simply have no interest in learning Objective-C or lack artistic ability, there are plenty of freelancers and development teams out there who can handle various parts of the project for you. Outsourcing development is a complicated process, but it can save you a lot of headaches if you’re not into coding. Be sure that everyone involved signs a non-disclosure agreement, and ensure the payment structure is in place before any work begins.
- ODesk and Elance are two of the most popular freelance services on the Internet, both offering hundreds of developers and artists with a wide range of skills.

Create a developer account. In order to distribute your app on the App Store or share it with others for testing, you’ll need to sign up for an Apple Developer account. The account costs $99 per year and requires you to provide tax ID and bank account details.
- You can create an account at the iOS Dev Center website.

Download a few apps to try out. After registering for a Developer account, you'll gain access to Apple’s developer resources. These include a wide array of sample projects that can provide you with valuable insights into how app development works. Find an example related to the type of app you want to build and explore it using Xcode.
Planning Your App

Define your concept. Before you even open Xcode for the first time, you should have a carefully thought-out plan for your app and its features. This includes a design document outlining all the app's functions, sketches of the user interface, the flow between screens, and a basic idea of the systems that need to be implemented.
- Try to stick to the design document as much as possible while developing your app. This will help you stay focused on the features you want to include.
- Try to sketch at least a small version of each screen in your app.

Identify your app's users. Your app’s users will have many interactions with the interface and functionality of the app. For example, a to-do list app will appeal to a completely different audience than a violent shooting game. Knowing this will guide your decisions.

Solve a need with your app. If your app is some type of utility, it should provide a solution to a problem that hasn't been addressed before, or it should do it better than previous attempts. If your app is a game, it should have one or more unique features that make it stand out and attract a specific group of players.

Consider the content. Your app's user interface will be defined by the type of content you plan to display to your users. For instance, if your app handles images, you’ll want to design a UI that makes viewing and browsing those images as seamless as possible.

Practice good UI design processes. The user interface should never hinder the user. This means that options must be clearly presented, and users should never wonder what a particular button does. If you use icons, they should accurately represent their functions. Navigating through the app should be smooth and intuitive.
- UI design is more of an art form than a science. You’ll likely need to review your design constantly as the project progresses.
Creating the App

Create a new project in Xcode. Open Xcode and start a new project from the File menu. Select 'Application' from the 'iOS' section in the left panel of the window. Under the templates section, choose 'Empty Application.'
- There are many templates available, each designed for different tasks. Start with an empty template until you’re more familiar with the development process. Once you're comfortable with how everything works, you can explore more complex templates.
- You’ll need to provide a Product Name, your company identifier, and a class prefix. If you don’t have a company identifier from Apple, use com.example. For the class prefix, enter XYZ.
- Select 'iPhone' from the Devices menu.

Create a Storyboard. A storyboard is a visual representation of all the screens in your app. It shows the content of each screen and the transitions between them. The Storyboard tool will help you develop the flow for your app.
- Click File → New → File.
- Under the iOS section, click 'User Interface.'
- Select 'Storyboard' and click 'Next.'
- Choose 'iPhone' from the Devices menu, then name the file 'Main.' Ensure the file is saved in the same location as your project.

Assign the Storyboard to your project. After creating the storyboard, you need to assign it as the main interface for your application. The storyboard will load when your app starts. If you don't assign a storyboard, nothing will happen when the app launches.
- Click on the name of your project in the left-hand navigation tree.
- Find the 'Targets' section in the main window. Select your project from the list of Targets.
- Locate the 'Deployment Info' section in the 'General' tab.
- Enter Main.storyboard into the 'Main Interface' text field.

Add your first screen using a display controller. Display controllers dictate how content is presented to the user. There are various pre-configured display controllers available, such as standard views and tables. You will add a display controller to your storyboard to let the app know how to display the content to the user.
- Select the "Main.storyboard" file from the project navigator. A blank canvas will appear in the Interface Builder window.
- Find the Object Library, located at the bottom of the right-hand panel. You can access it by clicking on the small box icon. This will load a list of objects you can add to your canvas.
- Drag and drop the 'View Controller' object onto the canvas. Your first screen will appear on the canvas.
- Your first 'Scene' is now ready. When the app launches, the display controller will load the first screen.

Add interface elements to your first screen. After setting up the display controller, you can begin filling the screen with the interface elements you need, such as labels, text input fields, and buttons. These interface elements can be found in the Object Library, where you previously found the 'View Controller'.
- Drag objects from the library to add them to your screen.
- Most objects can be resized by dragging the boxes around the edges. As you resize, alignment guides will appear to help you ensure everything is properly aligned.

Customize the objects you add. You can modify the properties of each object, allowing you to create a custom and intuitive interface. For example, you could add placeholder text to a text field to help guide the user on how to input data.
- Select the object you want to customize and click the 'Attributes Inspector' button at the top of the right panel. The button looks like a shield.
- Customize the object to your liking. You can change properties such as font style, font size, text color, alignment, background image, placeholder text, border style, and more.
- The available customization options may vary depending on the object you're modifying.

Add more screens. As your project progresses, you may need to add additional screens to display all the necessary content for your app. For instance, if you're making a to-do list app, you'll need at least two screens: one to input tasks and one to view the full list.
- New screens are added by dragging and dropping display controllers onto the empty areas of your canvas. If you can't find an empty space, zoom out until you see available areas. Make sure you're dropping the display controller onto the canvas and not an existing screen.
- You can change the initial screen by selecting the display controller you want to be the starting point in the project outline. Click the 'Attributes Inspector' button and check the 'Is Initial View Controller' box. For example, if you're creating a to-do list app, you would want the list to be the first thing the user sees when they open the app.

Add a navigation bar. You now have two screens in your app. The next step is figuring out how users can navigate between them. You can achieve this by using a Navigation Controller, which is a special controller that adds a navigation bar to the top of your app, enabling users to move back and forth between screens.
- Your Navigation Controller must be added to the initial display so it can manage all subsequent screens.
- Select the initial display from the project outline.
- Click Editor → Embed In → Navigation Controller.
- A gray navigation bar will appear at the top of the screen where you added the controller.

Add functionality to the navigation bar. With the navigation bar added, it's time to start incorporating navigation tools. This allows your users to move between screens.
- Add a title to the navigation bar. Click on the Navigation Item below the view controller it's assigned to. Open the Attribute Inspector and type the title of the current screen in the Title field.
- Add a navigation button. Open the Object Library (if it's not already open) and search for Bar Button Item. Drag and drop it into the navigation bar. Typically, 'go to' buttons are placed on the right side, while 'back' buttons are on the left.
- Set properties for the button. Buttons can be configured to have specific properties that make them more adaptable to the context. For example, if you’re building a to-do list, you might want to add an “Add” button to create a new task. Select the button, open the Attribute Inspector, go to the Identifier menu, and choose 'Add.' The button will change to a '+' symbol.

Link the new button to an existing screen. To make your button functional, you'll need to connect it to another screen. In our to-do list example, the button is placed on the main list and needs to link to the screen where you add an item. To link the button, hold down the Ctrl key and drag the button to the second screen.
- When you release the mouse button, the Action Segue menu will appear with a list of options. Select 'Push' to use a push transition when navigating between screens. You could also choose 'Modal' to open the screen as a standalone action, not in sequence.
- If you select Push, a navigation bar will be automatically added to your second screen, and a back button will be created automatically. If you choose Modal, you’ll need to manually add a second navigation bar, as well as a 'Cancel' and 'Done' button (for a to-do list, the button labels will change based on your app's needs).
- The 'Cancel' and 'Done' buttons can be created in the same way you created the 'Add' button. Simply select 'Cancel' or 'Done' from the Identifier menu in the Attribute Inspector.

Add data handling capabilities. Up until now, you’ve created a basic navigation interface without writing any code. If you want to add advanced functionality, such as saving data and processing user input, you’ll need to write some code. Writing code is outside the scope of this guide, but there are many Objective-C tutorials available online.
- You can use the interface prototype you've built to help hire a developer. Having a working interface will make it easier to explain what you need in terms of code for everything.
Test the App

Launching iOS Simulator. Xcode includes an iOS Simulator that allows you to test your app on various simulated iOS devices. To launch the Simulator, select "Simulator and Debug" from the dropdown menu at the top of the Xcode window, then choose the device you wish to test on.

Building the app. Press the Build button, which looks like a traditional Play button, to compile the app and run it. The build process may take a few minutes. You can monitor the progress in the toolbar. Once the build is complete, the iOS Simulator will open, and you can begin testing your app.

Testing the app on your iPhone. Before distributing your app for testing, you can test it directly on your device (if available). Start by connecting your device to the computer via USB. Close iTunes if it opens. From the dropdown menu, select "Device and Debug", then click the Build button. After a few seconds, the app will launch on your iPhone. Test all functionalities before closing the app.

Debugging the app. If your app crashes, you need to investigate what went wrong and why. This is a broad topic with countless reasons your app may fail. Open the debug console and read the error messages. They can often be cryptic. If you don't understand the error, try searching for the message on Google. You might find a forum post from an experienced, helpful developer answering the request of fellow developers.
- Debugging can be time-consuming and tedious. If you don't give up and stay persistent, you'll eventually improve at it. You'll start to recognize bugs, trace them faster, and sometimes even predict when they'll happen. A common mistake is freeing an object from memory more than once. Another is forgetting to allocate memory and initialize an object before attempting to add or assign it. As you continue working on different apps, the number of bugs in your projects will gradually decrease.

Checking memory usage. iPhones have limited memory. Every time you allocate memory for an object, you must release it once you're done with it to free up space. Instruments, a tool in the iPhone SDK, helps you view and analyze memory usage, along with other tasks.
- To use it, go to "Device and Debug" in the menu, choose "Run" → "Run with Performance Tool" → "Leaks". This will launch Instruments and start the app on your device. Continue using the app normally. Sometimes, the app will freeze momentarily as Instruments records and analyzes memory usage. Any leaks will appear as sharp red spikes in the Leaks process. The source of the leak will show in the lower section of the screen.
- Double-click on a leaking object to go to the code responsible or click on the small arrow in the address column to see the leak's history. Sometimes, the leak's location isn't the source.
- If it's still unclear, try a process of elimination. Comment out or carefully skip over code sections and run it. Often, you can narrow down the scope and eventually identify the line of code causing the issue. Once you pinpoint it, you can fix or rewrite it. Remember, Google can often lead you quickly to Apple’s internal forums or helpful documents that can solve your issue.

Share your app for others to test it out. While testing your app in simulation mode is a great way to ensure it works and looks good, nothing beats having multiple users outside of yourself try it. Just make sure to address the most critical bugs before distributing it for external testing. To share your app with testers, you’ll need to create an Ad-Hoc certificate on the iOS Dev Center page.
- External testers may offer unexpected feedback, which can be especially valuable if your app is complex.
- To authorize the tester’s devices, you’ll need their UDID numbers.
- Select Device from the dropdown list and click the “Build” icon. In Finder, navigate to your project folder and open the "Ad-Hoc-iphoneos" folder. Inside, you’ll find an app. Copy the "AdHoc.mobileprovision" certificate you obtained from the iOS Dev Center into the same folder. Select both the app and certificate, then compress them. This zipped file can be shared with your external testers. You’ll need to create a separate zipped file for each Ad-Hoc certificate.
Release Your Project

Create your distribution build. From the dropdown menu, select Device and Release. Click the “Build” icon. In Finder, navigate to your project folder and locate the "Release-iphoneos" folder. Inside, you will find an app. Compress it into a zip file.
- For the apps to receive Apple certification, they must be optimized for iOS 8 and Retina displays.

Access the iTunes Connect dashboard. You can reach this page from the iOS Dev Center. If there are any unfinished steps, they will be listed at the top of the page. Make sure all your banking and tax ID information is entered correctly.

Enter your app details. Click “Manage Your Applications” and select “Add new Application.” Fill in the app name, SKU number, and select the bundle ID. Choose your app's bundle from the dropdown menu.
- Fill in the description fields, keywords, support page, category, contact email, copyright info...
- Complete the permissions and pricing sections.
- Prepare iTunes screenshots. You’ll need a large vector icon (512x512) and a few screenshots of your app. These screenshots can be captured using the iPhone simulator by pressing Command + Shift + 4, then dragging the crosshair pointer to the selected area. Ensure they are 320x480 for iPhone. Screenshots are crucial for marketing your app, so make sure they highlight the most important features.

Upload your application. Click on the "Ready to Upload Binary" button to proceed. You will be redirected to a screen that guides you to download the Application Uploader tool. Once downloaded, click Done.
- Install the Application Uploader tool and launch it. Upon first launch, the program will ask for your iTunes login credentials.
- The Application Uploader will verify your iTunes Connect account and search for any apps ready for binary upload. These apps will appear in a dropdown menu. Select the app you want, choose the previously created compressed distribution, and upload it. The uploader will check the package for any issues, such as incorrect versions or missing icons. If everything is correct, the compressed file will be uploaded successfully and finished.

Wait for the review process. At this stage, all you can do is wait for the review process to complete. Apple will notify you via email within a few days or weeks if your app status changes to "In review." Once under review, the process will be quick. If your app fails the initial review, you will receive a rejection email explaining the reasons and offering suggestions for corrections. If your app passes the review, you will be sent an email confirming that your app is ready for sale. Your app will then be available on the iTunes App Store.


Track your sales. Download the iTunes Connect Mobile app for free on your iPhone. Log in daily to monitor your sales, markets, and countries where your app is performing well. This is where the real fun begins! Apple will periodically send you emails with links to your latest sales data. You can download them for your records. Best of luck!
Tips
- Be original and avoid copying existing apps on the App Store. Research the entire App Store to see what's out there. Of course, if your idea is better, feel free to go ahead with it.
- Always look for ways to improve your app.
- Try to update your app regularly.
- If you prefer physical reference books, check out Amazon.com for some titles on iPhone development.
- Test your app on as many different iDevices as possible, especially those with various iOS versions installed.
- If you hire an iOS developer and want to ensure your iOS app looks as you envisioned, you can design the interface in Photoshop and use a tool to convert it into a working app compatible with Xcode/iOS.
- If you're learning to code, structured block languages or online classes can be very helpful.
Warning
- The iPhone SDK tools are constantly evolving as devices progress. If an SDK update becomes available during your project, make sure to review the new features and changes before upgrading. Unless Apple announces that new submissions must be compiled with the latest SDK version, there's no immediate need to switch. However, if you do upgrade, be aware that some methods you previously used may no longer work, and while this might not trigger any compile-time warnings, caution is advised.
- There's no guarantee that you'll make a lot of sales or downloads, but don't get discouraged.
- Once you successfully launch an app on the App Store, don't be intimidated by petty critics who leave malicious reviews. Some feedback will be valuable, while others will simply be rude.
- This can become addictive; you may find it hard to stop.
