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."
Enjoy browsing!
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.
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. 🤓