5 favorite AppCode shortcuts by Krzysztof Zabłocki

Hi everyone,

Today we are going to share with you another 5 favourite AppCode shortcuts from a well-known iOS community member. This series of blog posts, in which we ask well-known personalities in the iOS development world who uses AppCode a simple question “What are your 5 favorite AppCode shortcuts?”, started with Orta Therox and Paweł Dudek. And today we are happy to present you answers from Krzysztof Zabłocki!

Krzysztof ZabłockiKrzysztof Zabłocki, an author of @foldify and Objective-C Playgrounds, loves to share stuff related to iOS development, hacking things and simplifying workflows for other developers.

Krzysztof on Twitter: @merowing_.
Krzysztof on GitHub: github.com/krzysztofzablocki.

I use Default keymap, with some modifications added, like selecting/navigation around camel case words, etc.

Let us now introduce you to 5 favorite shortcuts from Krzysztof. We’ll also point out these shortcuts as they come in the Default keymap.

I. Syntax Aware Selection (⌥Up)

I use this quite a lot when refactoring, it makes it much easier to extract method or variable and enables me to work effectively without using a mouse.

By the way, the same shortcut was mentioned by Paweł Dudek as well.

II. Show usages (⌥⌘F7)

Can’t live without it, gone are days of using cmd+shift+f to find references in Xcode, show usages is context aware and so much better.

III. Quick Fix (⌥⏎)

I write my code TDD way so this is must-have.

Paweł Dudek was also mentioning this shortcut in TDD context.

IV. Rename (⇧F6) and Override/Implement (^O/^I)

Both rename and override are very common usage case for me, I constantly refactor my code and having confidence to do so is really helpful.

V. Introduce Variable (⌥⌘V) / Extract Method (⌥⌘M)

Must have for being able to perform constant refactorings of my code.

P.S. And a bit more…

For navigating and learning my way around new code:

  • ⌥⌘B -> Go to definition(s), which for me is showing all subclass implementations:
  • ⌥⌘N-> Inline, which makes it easier to understand bigger piece of code.
  • ⇧⌘T -> Jump to test, which is very helpful.

That’s it! Thank you Krzysztof for sharing this with us.

Develop with pleasure,
The AppCode Team

Posted in Tips'n'Tricks | Tagged | Leave a comment

5 favorite AppCode shortcuts by Paweł Dudek


Last week we started a series of blog posts, in which well-known iOS community members share their AppCode experience. They all answer a very simple question: What are your 5 favorite AppCode shortcuts? First answer from one of the most well-known personalities in the iOS development world, Orta Therox, was already published.

Today we are happy to share with you 5 favourite shortcuts from Paweł Dudek. You probably remember a fantastic webinar (BDDing your Objective-C Apps) done by Paweł and Łukasz Warchoł nearly a year ago. They were talking about leveraging AppCode to empower your BDD workflow.

Paweł DudekPaweł Dudek is Senior Software Engineer at Taptera, where he builds beautiful iOS apps for enterprise. He is also an organizer of the Mobile Warsaw. TDD believer and practitioner. Beer and coffee lover. And bass guitars during free time.

Paweł on Twitter: @eldudi.
Paweł on GitHub: github.com/paweldudek.

“I’m using the vanilla IntelliJ keymap in AppCode. It was a bit hard to switch over initially, however it’s really beneficial as most of those shortcuts work across all JetBrains products, which makes switching to other IDEs simple.

We’re also doing a lot of pair programming here at Taptera and it’s just simpler when everyone has the same shortcuts – no fighting over which keymap is better ;)

When it comes to shortcuts my first thought when I was asked was “only 5?”, but after giving it few minutes of thought I landed on shortcuts that centre around code refactoring and generation. For me this is the best thing about AppCode – ability to quickly change and generate code. This is also reflected in my statics for shortcuts (actually did you know you can see such thing? Go to Help -> Productivity Guide), Generate Code is quite high on the list.”

Let us now introduce you to Paweł’s 5 favorite shortcuts. We’ll also point out these shortcuts as they come in the Default keymap.

I. Generate Code (⌘N)

This is definitely one of my favourites. I strongly rely on creating custom initialisers for objects and being able to just click Ctrl+Enter and select initWith.. is a huge time saver.

Here is also Override/Implement Method (^O / ^I) – two real gems. They allow you to quickly implement or override all the methods your object could have by just pressing ^O / ^I. Really cool when you’re using a lot of protocols to abstract things. Moreover you can press ⌥O to show/hide optional methods from the list. Or select (⌘A) all and just implement them ;)

II. Syntax Aware Selection (⌥Up)

It seems really simple, but it’s been a game changer in how I work with code. It’s actually second on my most used features of AppCode. Being able to quickly select given parameter, or method call, or whole block, or whole method implementation insanely speeds things up.
A common pattern for me when working with code is quickly pressing ⌥Up to select method call and ⌥⌘v to extract variable. That way I don’t have to actually declare variable, I just quickly write the method call and then magic happens.

III. Quick Fix (⌥⏎)

I can’t stress enough how important this is when writing code, especially when doing TDD. In TDD tests are always written before implementation. Without AppCode you have to do the mundane task of going to the class you’re testing, declaring method there (and you have to remember all parameters you’re going to use – good luck with blocks), moving to implementation, declaring it there and then finally you can go back to your tests.

With AppCode it’s just ⌥⏎ -> generate method. It understands what objects you’ve passed and automatically prepares method signature. Moreover this works beautifully with blocks! My last favourite feature of Quick Fix is split into declaration and assignment – helps me extract variables when writing BDD-like tests in Specta/Quick.

There’s dozen other ways you can use this and options differ for different contexts. Be sure to check this feature out, you might find a really cool and useful feature!

V. Change Signature (⌘F6)

One that I really love. Being able to just press ⌘+F6 and just add/remove variables in a method signature helps me quickly refactor code. Plus you can move parameters around by pressing ⌥ and Up/Down arrows.

P.S. And a cherry on top (Find Action ⌘⇧A)

There’s one last shortcut that didn’t make into my favourites list and which is extremely useful when you’re starting your adventure with AppCode: Find Action. By pressing ⌘⇧A you get a place where you just type what you want to do and AppCode will tell whether there’s an action like and what’s the shortcut for it (and of course execute it if you select it). This really helped me when I was starting my adventure with this IDE as I remember what it could do, but did not have the muscle memory yet.

That’s it! Many thanks to Paweł for sharing his experience with us!

Develop with pleasure,
The AppCode Team

Posted in Tips'n'Tricks | Tagged | Leave a comment

5 favorite AppCode shortcuts by Orta Therox

Hi everyone,

iOS community is diverse and rapidly growing. Like in other communities, there are members whose experience and knowledge are tremendous. Some of them use AppCode as an IDE for their iOS/OS X development, and as experts know a lot of tricks and productivity tips. In this series of blog posts we’d like them to share their experience with you.

As you may know, AppCode relies on a keyboard-centric approach to help you focus on code and raise your productivity. It has keyboard shortcuts for almost every feature, action and command. You can use one of the pre-defined keymaps or customize them as you wish.

Recently we’ve asked a few community members using AppCode in their everyday work a very simple question: What are your 5 favorite AppCode shortcuts? Here is the answer from one of the most well-known personalities in the iOS development world, Orta Therox.

Orta TheroxOrta Therox is Head of Mobile at Artsy and Design Dictator at CocoaPods.

Orta on Twitter: @orta.
Orta on GitHub: github.com/orta.

“I use a heavily modified version of the Xcode Keymap within AppCode. My first mentor was credited in the original book for TextMate, so I’m highly influenced in my expectations for keys based on TextMate. My favorite key commands all are about getting around code nimbly, and making quick edits. Because of this they are a little bit mundane, but these are solid foundations for navigation and exploring code bases. There are people that believe in the defaults, and then there are the tinkerers who can’t use anyone else’s computer. I’m the latter. 

For the last two years I’ve been keeping track of my own custom keymap settings in a repo on my GitHub. If any of the setup for these 5 resonate with you, you can grab the full set and a few more there.”

Let us now introduce you to Orta’s 5 favorite shortcuts. We’ll also point out these shortcuts as they come in the Default keymap.

I. Refactor This (^T)

My favorite key combo is the one for Refactor This, which I have assigned to ⌥ + T. It presents a list of refactorings that can be ran from the current cursor, reminding you of all the current options.

II. Search Everywhere (Double ⇧)

Next up is Search Everywhere which I have assigned to ⌘ + T. It’s a good job this is shown when you have no tabs open. I still have a mental modal that this is “Open Class”, but being able to write down almost anything I can name within a codebase and instantly jump to it means I’m often pleasantly surprised. The mapping for this command is a TextMate-ism.

III. Navigate with the File Structure (⌘F12)

Then Navigate with the File Structure which I have assigned to ⌘ + ⇧ + T. If I’ve used Search Everywhere to get into a file, I can then use File Structure to dig around inside and see what’s hiding in the file. It pops up a menu that you can then type to filter through until you tap enter to jump to that symbol in code. The mapping for this command is a TextMate-ism.

IV. Find Usages (⌥F7)

Then Find Usages, which I have assigned to ⌘ + ^ + F. I use this as an improved Find All and so it has a similar mapping. It makes it easy to see the communication patterns of code upon request.

V. Rename (⇧F6)

Finally, Rename in my build is ⌘ + ^ + E. This is a shortcut to Refactor This + ⏎. It matches Xcode’s Edit All In Scope, but provides a deeper refactoring as it can go outside of the current scope and make changes to anything that can be named, not just inline variables.

That’s it! Thank you Orta for sharing this with all of us.

Develop with pleasure,
The AppCode Team

Posted in Tips'n'Tricks | Tagged | 1 Comment

New AppCode 3.2 EAP build: Override/Implement for Swift and more

The new Early Access build for AppCode 3.2 Tascalate (141.1689) is now available for trying. You can download it from the confluence page, an update from the previous EAP build is available.

Override/Implement in Swift

You can override any method of a parent class or implement any protocols, using the code generation facilities with Ctrl+O/Ctrl+I or generate menu (Cmd+N). AppCode creates a stub with some default code (for example, call to a method of the superclass for override), leaving the developer with the task of providing some meaningful source code. This works for Swift now – try it right away!

Device detection problem after installing Xcode 7

As we all followed an exciting WWDC 2015 event in San Francisco last week and tried many new features and especially new Xcode 7 beta, some problems with AppCode appeared after that (even when you are back to Xcode 6.*). This build includes a fix for the device detection problem (OC-12036).

nullable/nonnull in Objective-C

Since this EAP build AppCode supports nonnull/nullable annotations from the latest version of Objective-C. That means these keywords are parsed and completed correctly now:

Custom JDK update

In the first 3.2 EAP we’ve introduced a custom build of JDK 1.8 with fixes from the JetBrains team. It was very warm welcomed, however had some critical performance problems. This build addresses these issues, as well as a problem with high CPU usage (OC-12011). New AppCode 3.2 EAP build including updated custom JDK is located on confluence page.

Full list of fixes and improvements can be found in our tracker. Give new build a try and share your feedback with us!

Develop with pleasure,
The AppCode Team

Posted in Announcement, Early Access Preview | Tagged , , | 3 Comments

AppCode 3.1.7 critical bug fix update


This week we all follow an exiting WWDC 2015 event in San Francisco. And you undoubtedly want to try all these new features and especially new Xcode 7 beta. Still when you are back to work in AppCode using stable Xcode 6.* release you could find out that device detection is not working after Xcode 7 beta was installed. This build fixes the problem, as well as unnecessary popup requesting to allow incoming network connections for ‘LLDBFrontend’.

AppCode 3.1.7 is now available for download. You’ll also get an automatic notification about this update in the IDE, or can do AppCode | Check for Updates manually.

We also would like to remind that AppCode 3.2 Early Access Program is running. Check what is inside and download a build to give it a try. We’ll provide a new AppCode 3.2 EAP build with Xcode 7 beta related fix quite soon. Stay tuned!

Yours as always,
The AppCode Team

Posted in Announcement | Tagged , | 8 Comments

AppCode starts 3.2 EAP with hot mix of Swift support improvements and new platform features

Hi everyone,

With summer right here, we couldn’t wait any longer. The Early Access Program for AppCode 3.2 has launched!

It’s been six months since we released AppCode 3.1, which was mostly dedicated to Swift. Our top priority hasn’t changed, but there are quite a few other things on the plate, too! Read on to learn what’s inside AppCode 3.2 EAP and download the first build from our confluence page.

Mixing languages

We delivered basic Swift support in June 2014, soon after WWDC 2014. We then took a big step forward in October 2014 with AppCode 3.1 EAP, offering deeper Swift support. Since v3.1, AppCode supports resolving Swift symbols in Objective-C code. We’ve grown up and can now resolve in the opposite direction, too: Objective-C symbols in Swift code.
Continue reading

Posted in Announcement, Early Access Preview | Tagged , | 66 Comments

AppCode 3.1.6 bug fix update and UIKonf 2015

Hi everyone,

We are sorry for keeping silence for a long time. The reason for it is that we are working hard on the next AppCode EAP. However, some of you have faced a very unpleasant problem on OS X 10.10.4 beta – AppCode failed to start there correctly. That’s why we decided to publish one more update for the 3.1 version that brings a fix to you.

AppCode 3.1.6 is now available for download. You’ll also get an automatic notification about this update in the IDE, or can do AppCode | Check for Updates manually.


In case you are in Berlin next week don’t miss a chance to get an answer to your questions about AppCode right from a team member, face to face. You are very welcome to stop by our booth at UIKonf. We will be happy to chat and share ideas.

Yours as always,
The AppCode Team

Posted in Announcement, Events | Tagged , | 12 Comments

AppCode 3.1.5 bug fix update

Hi everyone,

After the release of Xcode 6.2 some of you have mentioned that AppCode misses iOS 7 and iOS 8.1 simulators in case of using this latest Xcode version. We are very sorry for the inconvenience, and this update brings a fix to you.

If you’re running AppCode 3.1.4 or 3.1.3 and haven’t received a notification about the update yet, check for it via AppCode | Check for Updates. Or simply download a build from our site.

Yours as always,
The AppCode Team

Posted in Announcement | Tagged | 18 Comments

AppCode 3.1.4 bug fix update

Hi everyone,

A bug fix update, AppCode 3.1.4, is now available for download. You’ll get an automatic update notification in the IDE in case you are using AppCode 3.1.3.

This build mainly addresses a regression in Swift Rename refactoring (OC-11659) introduced in the previous build, and some cosmetics related to the IDE icons (OC-11577). Fixed now, and sorry for any possible inconvenience.

We are planning to dive into Swift language now and start the EAP build with many new features soon. Follow us to get the updates.

Yours as always,
The AppCode Team

Posted in Announcement | Tagged , | 12 Comments

AppCode 3.1.3 update available

Hi everyone,

AppCode 3.1.3 is now available for download. You’ll also get an automatic notification about this update in the IDE.

This update is mostly focused on Swift support, including some new features of Swift 1.2 introduced recently.

Parameter Info
With this build a long-awaited Parameter Info feature has arrived. If you are ever unsure what exact parameters to pass to a function, Parameter Info (Cmd+P) is there to help. It shows you parameter types and available function signatures, now for Swift code as well:

Swift modules completion
While adding imports in your Swift code in AppCode you can benefit from module names autocompletion, as well as public var symbols, classes, functions and struct completion:

Swift 1.2 additions
As all of you we are really excited with the new Xcode beta published recently. And we’ve already added support for some new Swift 1.2 features! First, new ‘if-let with where-clause’ is parsed correctly in AppCode now:
Second is ‘as!’ support, also introduced in this update:

Other noticeable updates in Swift support include:

  • External parameter names are resolved correctly, and thus navigation to such parameter declarations and rename refactoring work for them now (OC-10975).
  • Completion for enum cases works since this build (OC-11459).
  • While completion lists all the available options, smart completion filters them to match the type. You can benefit from it while completing method call arguments (OC-11421).

The full list of fixed issues can be found in our tracker.

Sincerely yours,
The AppCode Team

Posted in Uncategorized | Tagged , | 15 Comments