Original address: http://benscheirman.com/2013/08/the-ios-developers-toolbelt (need to turn over the wall)
If you go to the workshop of a skilled carpenter, you will always find that he / she has a bunch of tools to complete different tasks.
The same is true of software development. You can see how well a software developer is from how he uses tools. Experienced developers are good at using tools. Continue to study the tools you currently use, and understand the use of some alternatives. When the tools you currently use cannot meet your needs, you can fill the gap.
With these in mind, I will show you a long list of various tools. I use some of them daily, and others use them depending on the situation. If you have more tools that you want to show in this list, you can leave a message with me.
I try my best to classify the list. Some are websites and some are background services, but most are apps you can install. Not all apps are free, so I will use the $ symbol to indicate whether this app will cost money.
Without further ado, let's start right away.
inspiration
pttrns- A great iOS screen design gallery by task. For example, if you want to see how other applications handle activity feeds, here you can find a bunch of examples.
TappGala-Another great collection station for beautiful application design. It is not categorized by task, just a list of excellent applications, you can get inspiration here.
Cocoa Controls-A great list of components (code) you can use in your iOS app. Sometimes you can find a good code to save time, and sometimes you can learn how other developers accomplish a certain function. Subscribe to their weekly newspaper, it's all the best, and very little dross.
IICNS-A collection of truly excellent icons. Get inspired, but don't plagiarize.
Dribbble-The best designers show their work on it. Really fine.
Capptivate-A gallery of inspirational design works. Some are animated. Thank you, @joaopmaia!
design
Mocks ($)-A simple application tool for quickly creating iOS application prototypes. With some default controls, you can quickly build prototypes.
Briefs ($) – a very useful application that allows you to create application prototypes and connect the prototypes to form interactions. You can deploy to real devices and see how it feels in your hands.
Acorn ($) – a strong competitor of Photoshop, much cheaper than ps. I find myself using Photoshop less and less recently. The project is under active development and maintenance.
Sketch ($)-A vector-based drawing tool. As the screen size and pixel density change, this tool becomes more and more useful. It only needs to be designed once, and then it can be scaled as needed. It also comes with a very powerful export system. For the Sketch sample project, please see Sketchmine. I have a video demo on my screencast on Sketch.
iOS 7 PSD by Teehan + Lax-If you (or your designer) use Photoshop, this is a super useful resource. There are also iOS 6 versions.
Bjango ’s Photoshop Actions-If you use Photoshop to design iOS apps, it will definitely save you time. One click to resize the canvas, zoom 200% (or 50%), set the global brightness to 90, etc. There are also many Photoshop skills in their blog.
xScope ($) – an indispensable Swiss army knife, guide, pixel magnifier, screen measurement, etc. Want to know the color value of a pixel? Want to know how many pixels are between a button and a window in a Mac application? xScope can help you. Take a look at the iPhone app they developed for mirror design, and see how perfect the pixel design is on your Apple device.
Glyphish ($)-A great collection of high-quality icons that can be used by your iOS apps. There are not many built-in icons provided by Apple, so it is useful to have such an icon set that encompasses various concepts. I am still looking for some icons about babies. Glyphish is released in the form of a package. The latest package has the "thin line" icon of iOS7, which is useful when designing iOS7 applications.
Fontastic Icons for iOS- A collection of open source classes that use icon fonts, such as Font Awesome in iOS applications. You can get an icon quickly and easily in any pixel dimension. Since fonts can be easily scaled in nature, it is convenient to use icons on different platforms in this way, without exporting different versions according to different sizes.
PaintCode ($)-a vector-based drawing tool that can export your work as Core Graphics source code. It is great for learning Core Graphics drawing, and it is also very convenient if you want dynamic drawing. I have a video demo on my screencast on PaintCode.
Edge Insets ($) – a simple tool that helps you define reusable image margins. Available on the Mac App Store.
LiveView-A remote screen viewer on iOS, you can easily see your design immediately on your device. Thank you, @_funkyboy!
Skala Preview ($) – Another great tool for quickly seeing your designs on real devices. Bjango's friends are very helpful, this application is worth the money. Thank you, jn40!
Source code control
Git-If you are not using source control, stop working and make changes immediately. I use git to do anything, I love it.
Kaleidoscope ($) – the best diff / merge tool. The three-way merger looks beautiful. I use it every day.
p4merge-A free and simple alternative to Kaleidoscope. Powerful three-way merge function, but finding download links is not easy. Every time I look for it, I feel that it is hidden deep on their website.
Git X-A simple and powerful GUI tool, you can see the timeline of git, easy and convenient to implement the temporary area submission. I usually use git on the terminal, but when I need to commit the changes in the staging area once I think of this application. This is a derivative of the original (deprecated) GitX, which I found on this list of derivatives.
Source Tree-A free and fully functional Git application. I have n’t used it because I like the command line, but if you like to use GUI tools, you can take a look at this.
Profiling applications
pngcrush-This utility can compress and decompress PNG files. It is useful when you want images in the App Store. Just open iTunes, view the list of local apps, and right-click the icon to open it in Finder. Then open the application, you can see a bunch of PNG files, but you can not view them. With pngcrush you can extract them all and then use preview to view them.
appcrush.rb-This handy ruby script can automate the above process for all pictures. Just point it to an .app file on your disk and it will extract all the pictures to a folder on your desktop. It's easy to know how the applications on your phone complete certain designs. I have a video demo on my screencast on dissecting apps.
Charles ($, free trial with limited functionality) – I do n’t know why its interface or icons are so ugly, but Charles is a very important tool for any developer. Charles acts as a proxy, allowing you to monitor the network traffic to and from your iPhone simulator. You can also monitor the traffic on your device by setting the phone's proxy to Charles running on your Mac. Word signed SSL certificate, request & response breakpoints, request / response viewer, Charles really praises it. A must-have tool. Again, a video demo on my dissecting apps.
editor
I know what you are thinking, do n’t all iOS developers use Xcode? The answer is that most are used. However, judging from the grudges between me and Xcode, I believe it is necessary to consider what alternatives are available.
AppCode- Jetbrains (ReSharper for .NET production company) is a full-featured IDE. Powerful refactoring tools and functions can help you write code faster. Quickly identify dead code, automatically insert #import statements when you use related code, and easily select variables, methods, and classes. The only thing I hope is that it can become a plugin for Xcode.
Vim- Wait a minute, vim? Really? It's true, someone does all Objective-C development in vim. I am not one of them, but I like to develop ruby with vim. Because of this, I really like ...
Xvim-An Xcode plugin that can use keybindings in vim.
OMColorSense-Another Xcode plugin. When your cursor stays on a line of code such as [UIColor redColor], it will show the color in the code in a small area. Click the color tab to open the color selector. Any changes you make above will be reflected in the code, and the corresponding code will be changed to [UIColor colorWithRed: ... green ... blue ... alpha: ...]. When I write code with this feature open, people always ask me when they see it: "Wow! What the hell is this!"
KSImageNamed-Another Xcode plugin that can automatically complete the file name of the image in the bundle when you type [UIImage imageNamed: ...]. With it, you can avoid those who accidentally type the wrong picture name and cause the method to return nil, and then you spend 10 minutes to check why the picture is not displayed.
CocoaPods Xcode Plugin-This plugin adds a menu item to interact with CocoaPods. Useful if you do n’t want to use the command line.
Alcatraz Package Manager-A great meta plugin that allows you to easily install other Xcode color schemes and plugins with the click of a mouse.
Code Runner ($)-A lightweight code-aware text editor that knows how to compile and run code in multiple languages. Want to quickly test an Objective-C code, but don't want to create an entire Xcode project? Try Code Runner.
Doc
Documentation, everyone's favorite topic. The documentation is important, so please note that we can make your life easier.
appledoc-Want to automatically generate official Apple-like documents? No more searching. Automatically define hyperlink symbols in your project and use specially formatted code comments to extract content. Generate official documents and HTML pages.
Dash ($) – a must-have API document viewer and code snippet manager. It is very useful, allows you to download and search API documents in various languages and frameworks, and it is very fast. The fastest way to access documents. To make searching faster, I integrated Dash and Alfred.
Dependency management
Yes, only one tool is listed here. I don't want to introduce a real list of third-party libraries, because they belong to another completely different list. When we talk about dependency management, the most important thing is:
CocoaPods-An important tool for managing Objective-C projects. Allows you to easily and quickly integrate third-party libraries into your application. It is achieved by creating another static library project and then automatically linking to your project. With thousands of pods available, you can easily add support for third-party libraries that are not yours (or private) to your project. I use CocoaPods in every project.
Diagnosis & commissioning
Sometimes we are developing applications, and we want to better understand what happened, fix bugs or improve performance.
Cocoa Lumberjack-A more powerful NSLog, Cocoa Lumberjack provides advanced logging behaviors, such as logging to file, network, and filtering based on log level (info, debug, warn, error). It is mentioned in NSScreencast Episode 61.
DCIntrospect-Super powerful tool linked to your application when you are debugging on the simulator. Once you do this, you can press the space bar to get some useful view debugging support. View the precise dimensions of the view elements on the screen, print the view hierarchy, and even move the view horizontally or vertically.
Pony Debugger-Another tool that you can embed a library in your debug version, Pony Debugger actually uses Chrome's development tools to view network requests made on the device, as well as a basic Core Data browser. It's hard to describe, please see my screencast on Pony Debugger.
Runscope ($) – Runscope is a web service that can capture requests and record days Zhi, give you useful data about your API. Because it is an HTTP channel API, it is easy to set up, you only need to change your host name.
SimPholders-Quick and easy access to your simulator folders. Browse according to the iOS version, then the application name, you can open the folder directly in the Finder.
Spark Inspector- When running your application in debug mode, you can use 3D to display and debug your view hierarchy. You really have to see this app to really understand its value. It can help you understand which views your application is made of. It also comes with a notification center monitor, you can easily see which NSNotifications are issued and who is watching them. Another application that monitors NSNotification is Reveal.
image
ImageAlpha-A Mac application that allows you to convert 24-bit PNG images with transparency into 8-bit PNG images with alpha channels. Usually 8-bit PNG images do not have an alpha channel, so if your image can be represented with 8 bits (such as a monochrome button), you can save a lot of space by converting 25-bit PNG to 8-bit.
ImageOptim-Another Mac application that can compress PNG images to save space. Most PNG files can save a few percentage points, sometimes even 30% or more. Smaller images mean smaller application sizes and smaller memory used to load them at runtime.
Prepo-A small application on Mac that can quickly transform pictures into as many sizes as you need. Just drag a large icon file (for example, 1024 * 1024) to Prepo, it will generate 512 * 512 iTunesArtwork, 114 * 114 Icon@2x.png, and other sizes and file names.
Slender ($)-A great application that can analyze your application to find out various problems, such as missing pictures on the retina screen, unused pictures, and pictures that can be compressed. Using Slender to remove those useless pictures can save a lot of space for your iPhone application.
Core Data
Mogenerator-A super useful tool to generate NSManagedObjects smart subclasses in your Core Data model. Some people use Xcode for this function, adding logic to the model by manually subclassing or creating categories. Mogenerator runs as a pre-compiled script to generate subclasses that you can use. It does this by creating an underlined version (_User) and a normal version (User) that you can modify.
Base ($)-you will definitely need to check your Core Data sqlite database to check what happened. You can use the sqlite3 command-line tool, but Base gives you a GUI browser for easy viewing. Don't vomit when you see the database schema that Core Data has created for you.
Core Data Editor ($)-For some more advanced data analysis, exploration and modification, you can use Core Data Editor. This application understands Core Data, so you are dealing directly with entities, not database rows.
Background Services
Eventually your iOS application will probably communicate with the server to share data, get new content, send push notifications, and so on. Although you can do it manually, you may want a more convenient solution.
Helios-Helios is an open source framework that provides basic background services for iOS applications, from data synchronization, push notifications to in-app purchases and passbook integration. It is based on many open source ruby gems, so you can choose to build your own stack if you want. Take a look at Nomad CLI, there are many useful related tools.
Windows Azure Mobile Services-You can think of it as a programmable database in the cloud. Create tables, use JavasScript to read, insert, delete, and add additional functions. Implementing push notifications is fairly simple.
Urban Airship-I am currently using Urban Airship for push notifications. It's easy to integrate, and it's free if the number of users is small.
Parse-This is another cloud data service, but it provides many APIs and has an online data browser. We use Parse for a very small application and it feels good.
analysis
There are other options here, but none of them made me feel the urge to replace flurry. I am happy to listen to opinions, please let me know in the comments.
Flurry-I have been using flurry for a long time, it can provide useful analysis data for users using my application. Want to know when you can stop supporting iOS5? Flurry will give you the data for you to discuss.
deploy
Deploymate ($) – iOS4 support is also required, but are you compiling with the iOS6 SDK? When you use some symbols that do not exist on your deployment target, Deploymate will warn you.
Cupertino-One of the Nomad CLI tools. Cupertino provides you with a command line interface to manage devices and profiles on Apple's Provisioning Portal. For example, just type ios devices: list to see the list of current devices in your account. Can be used to automate many processes.
Hockey App ($)-a great service to manage your ad-hoc release. Testers can get a link to install a new test version wirelessly. It also provides a robust crash reporting function, you can easily deal with the crash in your application.
TestFlight-A free application similar to Hockey App. We have been using TestFlight with great success. It is easy to publish applications and collect feedback from users. My only hope is that they can charge for this service. It also includes analysis and crash reporting functions, but we did not use those functions.
iOS Simulator Cropper-A simple way to take a screenshot of the simulator screen, with or without a status bar, with or without a machine shell, etc. Useful for some screenshots on the App Store or the general market.
Status Magic ($) – Take a better screenshot of the app store. Nothing makes your app look worse than the screenshot on the App Store with a low battery or low signal logo. Status Magic allows you to fully customize your status bar, including removing some elements, changing the time to what Apple likes "9:41 AM", and so on.
Crashlytics-A great crash reporting tool for the applications you are developing. The dSYM file is automatically uploaded in the release version, so your crash log will be automatically symbolized and organized for you, and you can focus on the most critical parts.
test
I think we as a community have not paid enough attention to testing. There are many good tools available, most of them are very easy to use, we have no excuse not to write some tests for our application.
Kiwi-A nice Rspec style iOS testing framework. Built on SenTestingKit, so you just press? U to run your use case. It also comes with robust mocking and stubbing libraries and assertions.
Specta-A lightweight BDD framework similar to Kiwi, but its expectation syntax has a better place than Kiwi: each variable is implicitly boxed: expect (items.count) .to.equal (5). There is no need to pack 5 into NSNumber like Kiwi, and it works better with Expecta.
The following several can be used to perform end-to-end acceptance tests. These tests will interact with your interface, click buttons, scroll, etc. Although they will run slower, it will be easier to see whether all modules are integrated well in a large-scale test.
KIF
Calabash
Zucchini
Frank
Bwoken
Demo / Market
Reflector ($) – mirror your iOS device to your Mac via Air Play. Very suitable for application demonstration on your computer.
Placeit-A collection of high-resolution pictures of people using the device, but the device can be customized by the screenshots you upload. It's cool, and it's great for displaying your apps gracefully on your website.
App sales report
Of course you want to know how much money your app can make, don't you? There are some solutions, here are some good ones:
App Viz 2 ($) – a useful Mac application that can track the sales of your app. You run it locally and it will log in and download your sales report.
App Annie- an online sales reporting tool. I ’m not too happy to give my certification information to a third party other than iTunes, but it does ensure that your report is up to date, and you do n’t need to run a program locally. In the comments, Josh Brown suggested that another user could be created for analysis in iTunes Connect, which is a good idea.
Lucky bag
These tools do not have a well-defined classification, but it is worth mentioning.
Quick Radar- Submitting a bug report to Apple is the only way we can help them improve the tool. If you are extremely frustrated by the lack of a feature, you can submit a bug report. If you encounter a bug, you can do the same. If they do not have radar, users have no right to complain. Therefore, it seems to be back in 1995 to submit a bug report through the bug reporter. Quick Radar is a great application, it can make submitting bug reports super easy. Automatically publish to the open radar, so that others can see it, or you can send it to Twitter and publish it to App.net. I use this application several times a week.
Okay, so much. A wall full of tools. I hope you will be able to add new tools to your weapon arsenal later. If you like this article, you can watch my iOS screen recording in NSScreencast.