Tools for iOS Developers

  • Gero Gerber, February 12, 2019
iOS Developer Tools

Tools can make your life (as a developer) much easier. Having a solid toolbox lets you work faster and achieving your goals easier. Beside tools you also need some good resources to learn from and stay up to date. This list is basically split up into three parts:


I would be happy when you find some of the tools and resources helpful. Please also give me feedback if I missed some oy your favorite tools/resources. I'd be happy to add more items to the list 😉


"Technology is nothing. What's important is that you have a faith in people, that they're basically good and smart, and if you give them tools, they'll do wonderful things with them."

Steve Jobs

Enjoy browsing!


Development Tools

  • Xcode
    Ok this one is pretty obvious. Xcode ist Apple's IDE for iOS, watchOS, macOS and tvOS development. It ships with a whole bunch of powerful tools (some of them are mentioned below) that make development for Apple platforms (more) easy. Beside the source-code editor and the integrated debugger Xcode comes with a profiler (Instruments), a UI editor (Interface Builder), Simulators, Version Editor and much more.

  • Hierarchy View Debugger

    The Hierarchy View Debugger lets you pause your app and inspect the view hierarchy. You can then see further investigate each single UI item and see its properties in the Inspector.

  • Memory Graph Debugger

    Similar to the Hierarchy View Debugger you can also make a snapshot of your app's current memory state. The Memory Graph shows allocated objects on the heap and their connections. This graph can help you find memory leaks. You can also export the memory graph to a .memgraph file and further analyze it with command-line tools like vmmap and malloc_history.

  • vmmap

    vmmap gives you an overview over your app's virtual memory usage. By providing a .memgraph file as input you can see which memory regions use the most memory.

    usage: vmmap -summary myapp.mempgraph

    You can even dig further by specifiying which memory region you want more info about using grep
    usage: vmmap myapp.memgraph | grep "MALLOC_LARGE"

    But that's not all we can have. Read about malloc_history for more detailed information about your memory...

  • malloc_history

    By enabling Logging of the Malloc Callstack in Xcode (Product->Scheme->Run->Diagnostics->Logging->Malloc Stack) you can get even more out of the .memgraph file. This option enables you to see the actuall callstack for a specified memory address.

  • GPU Frame Capture

    When your app uses Metal or OpenGL you can create so called GPU Frame Captures. This captures the next rendered frame of your app and you can inspect each render command and all resources (textures, meshes, shaders, etc.) used for this frame and the final output.

  • Xcode Instruments

    Xcode Instruments is Xcode's performance analysis tool. It support s you in profiling your app for all mind of performance metrics, like allocations, CPU usage, system activity and much more. Whenever you want to know why your app is slow or does use too much memory, Xcode Instruments is the tool to use!

  • Paint Code

    With PaintCode you can turn vector graphics into Swift or Objective-C code by utilizing UIKit and Core Graphics. You can also import vector graphics formats like PDF, SVG, PSD, AI and EPS and let PaintCode generate code for this. Why should you do this? It's pretty simple: by not embedding rasterized images in your app you stay resolution independent and your graphics will look amazingly sharp, regardless of how much you zoom into or scale them.

  • Kite

    Kite is similar to PaintCode but it also support creating animations that then get transformed to native Core Animation source-code. It also works with prototyping tools like Adobe XD CC and Sketch.

  • Asset Catalog Creator

    Asset Catalog Creator helps you creating asset catalogs for your app. All you need to do is provide an image and Asset Catalog Creator creates a full set of icons or launch screens for you.

  • Sourcetree

    Sourcetree is the git client I'm using on a daily basis. I know there are many alternatives out there (command-line) but this one works good for me and it's for free!

  • Dash

    Dash is an API documentation browser that lets you quickly search documentation offline. Dash supports a lot of so called documentation sets (e.g. iOS, Swift, C++, HTML, etc.) that you can download as needed. Further Dash lets you store code-snippets for easy reuse.

  • Pusher

    Pusher is a small tool that lets you trigger Push Notifications right from your Desktop via Apple's Push Notification Service (APN). You can also specifiy a payload which makes remote notification testing a breeze. And it's open-source!

  • Wireshark

    Wireshark is a network protocol analyzer that let's you monitor network traffic in much detail. You have to know what you are looking for and you need a pretty good understanding about computer networks to get most out of it. But then it is an invaluable tool.

  • Charles

    Charles is an HTTP Proxy that enables you to see all HTTP and SSL/HTTPS traffic between your machine or device and the Internet. This way you can easily monitor what is being transferred and how much data is being transferred.

  • Paw

    Paw is an HTTP client that lets you test any REST API. You see all details of each request/response that is happening and you can easily add payload in json format.

  • Rested

    Rested is similar to Paw in a way that it lets you send HTTP requests and view the response. You can also modify the request's payload and header.

  • Hopper

    Hopper enables you to reverse-engineer your executables. It can also reconstruct procedures with local variables. This tool is handy when you are keen to know what code ends up in your app or if you are wondering why your executable is so large or if you want to know which instructions are being generated by the compiler.


General Tools

  • MindNode

    MindNode is a great tool for mind maps. It helps you structuring your ideas or learn new stuff. It supports macOS and iOS.

  • Hex Fiend

    Hex Fiend is a small open source hex editor for macOS. It works well with large files and support binary diff.

  • Commander One

    Commander One is a dual pane file manager that works pretty much like Total Commander on Windows and it is a very good alternative to Finder. And btw. Commander One is approved by Christian Ghisler!

  • Sublime

    Sublime Text is an amazing text editor with lots and lots and lots of features like Multiple Selection and Split Editing. It's just amazing.

  • Shift-Command (⌘)-5

    This shortcut (available with macoS Mojave) allows you to take a screenshot of part of your screen, full windows or the entire screen. It further allows to record videos. It lets you choose to save the result in a folder, as a mail attachment or in your clipboard. This is one of my favorite screenshots and I used it heavily for this blog post.

  • Adobe XD

    Adobe XD is a pretty new design tool from Adobe. It let's you design, prototype and share your website or mobile app. With Adobe XD you can create interactive storyboards and preview them via a companion app on your device. And there's also a free plan for starters.

  • Caffeine
    Caffeine is a tiny tool that sits in your menu bar and prevents your Mac from going to sleep 😴

  • iStat Menus

    iStat Menu sits in your Mac's menu bar and serves as a system monitor. You can easily see how much your CPU is utilized or how much data is being uploaded/downloaded to/from the network.

  • Sketch

    Sketch is a prototyping tool that lets you easily create prototypes and mockups. It supports vector editing and there are lots of plugins available.

  • Yummy FTP Pro

    Yummy FTP is a handy FTP client for macOS. It supports FTP/S, SFTP and WebDAV/S.

  • Activity Monitor

    Activity Monitor is a built-in macOS tool that lets you monitor CPU, Memory, Energy, Disk and Network usage for all running processes. Here you can also kill not responding processes or create a spindump of those.

  • Console

    Console logs all messages from your macOS system and all connected devices. Here you will also find all messages that are logged via Apple's Unified Logging System.


Resources



Thank you for reading this blog post. If there's anything I missed, please contact me. If you enjoyed it please share my post or connect via Twitter or Instagram. 🤓


Share On
Gero Gerber

Freelancing iOS and Unity Software Developer and Author @ app|tects; Worked for Ubisoft and Electronic Arts on Splinter Cell and Assassin's Creed