New AppCode 3.2 EAP with improvements for mixed Swift/Objective-C code


AppCode 3.2 EAP build 141.2263 is available for download. From the Swift and Objective-C side, this build delivers:

  • Resolve for the custom Swift frameworks (for example, Alamofire).
  • Swift bridging header problems fixes: OC-11488, OC-10856, OC-12151.
  • Resolve for members (properties, functions, etc) of Swift classes when used in Objective-C. Please note, that renaming Swift member elements from Objective-C code is not yet supported.
  • Code Data objects rendering for Xcode 6.3+.
  • Some small fixes for __nullable/__nonnull keywords (OC-12083 and OC-12084).

Other changes include bundled LESS, SASS and YAML plugins.

The full list of improvements can be found in our tracker.

New build is available for download on the confluence page. The patch update is also available if you are using previous 3.2 EAP build.

Develop with pleasure,
The AppCode Team

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

AppCode 3.2 EAP, build 141.2000

Thank you for participating in the AppCode Early Access Program. We’ve started one for AppCode 3.2 recently and have got many useful comments and feedback from you. Today we’d like you to try the next EAP build (sorry, but patch update is not available this time). As usual, it doesn’t require an active license. We would really appreciate your feedback in our tracker.

Since Xcode 6.4 is released, we recommend to use this version in AppCode on OS X 10.10. On 10.9 the supported Xcode version is still 6.2. Xcode 7, by-turn, is in beta now, however we do our best to make AppCode 100% compatible and interoperable with Xcode when it’s launched. This time we’ve made AppCode run all the unit tests correctly with Xcode 7, regardless of the testing framework you are using (XCTest, Kiwi or GoogleTests).

In this EAP build, instead of the bundled LLDB, AppCode uses LLDB paired with Xcode you’ve selected in settings. That means, among other things, that you are able to use LLDB introduced in Xcode 6.4.

This build also addresses a couple of regressions while using ‘self’ keyword (OC-12030, OC-12153), fixes for Override/Implement in Swift that was introduced in the previous EAP (OC-12047, OC-11924) and more.

Develop with pleasure,
The AppCode Team

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

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:

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:

“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:

“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