News

AppCode 2018.1 is here!

Please welcome the release of AppCode 2018.1!

Read on to learn about all the new features and improvements, including the first part of Swift 4.1 support, improved RxSwift and Quick support, better handling of implicitly imported Swift modules, wireless debugging, location simulation, and more!

Splash

Download AppCode 2018.1

Swift

Swift 4.1 support

Go ahead and use Swift 4.1 in AppCode 2018.1, as now we’ve got its first big part supported including the following proposals:

  • SE-0185 (Synthesizing Equatable and Hashable conformance)
  • SE-0143 (Conditional conformances)
  • SE-0190 (Target environment platform condition):Target environment platform condition
  • SE-0075 (Build Configuration Import Test):Build Configuration Import Test
  • SE-0186 (Remove ownership keyword support in protocols)

If you’d like to track our progress on Swift 4.1 and its future versions, watch this ticket and its next steps.

Implicit modules

Some of the standard frameworks (such as CoreGraphics, Dispatch, and others) are implicitly imported in Swift code. Starting with this update, navigation and completion work correctly for them:
Implicit modules
Navigation and completion for Objective-C frameworks in Swift (such as Firebase and PureLayout) is also improved.

RxSwift support

Enjoy accurate navigation and completion for frameworks using extension type bounds, such as RxSwift:
RxSwift support
We’d like to thank everyone from RxSwift Slack who helped us by sharing their suggestions and providing feedback in the #appcode-users channel!

Quick support

Quick tests are now displayed hierarchically in the Test runner:
Quick hierarchy
Easily jump to a specific part of the Quick spec by using ⌘↓:
Quick navigation
Note that the same features for Objective-C Quick tests are not implemented yet.

Comments

Use new indentation options for Swift comments in Preferences | Editor | Code Style | Swift | Code Generation to reformat your code:
Comments settings
See multiline comments formatted properly in the Quick Documentation popup (F1):
Multiline comments

Objective-C and mixed code

This release brings several major improvements in Objective-C/Swift translation:

  • Class runtime type, SEL/IMP types, generic pointers, and some parameter types mentioned in this issue are correctly translated to Swift
  • The Rename refactoring and Find Usages work for Swift properties used in Objective-C code

Navigation to class/symbol now works much faster in mixed Objective-C/Swift and pure Swift projects. Besides this, we have also fixed an issue where false-negative warnings were shown in the editor for OCMock framework macros.

C++

All the latest C++ language support improvements implemented by our colleagues from the CLion team are also available in AppCode:

  • Support for C++17 structured bindings
  • Support for C++17 if and switch with initializers
  • Proper support for ternary operator
  • Reliable refactorings (Rename and Change Signature) for hierarchies

The editor is now more responsive thanks to incremental highlighting and changes to typing handlers.

Wireless debugging

AppCode now supports wireless debugging introduced in Xcode 9, so you can run and debug your application on devices in your local network. Note that the device needs to be paired using Xcode first.

Location simulation

Using location in your iOS app? We’ve implemented support for location simulation to help you develop faster and easier. Set the location you need in the Run/Debug Configurations dialog:
Location in the Run Configuration
Change it on the fly using the Simulate Location button in the Run or Debug tool window:
Change location on the fly
Create your custom location setup and use it in the same way as in Xcode:
Custom locations
Edit gpx files faster with the code assistance for XML:
XML assistance

Project scopes

Project Scope is a subset of files defined in Preferences | Appearance & Behavior | Scopes that can be used for filtering items in the AppCode Project tool window, reducing the scope of an inspection or search, and more:
Project scopes
Now, together with two default modes in the AppCode Project tool window (Project and Files), you can use several new predefined scopes and create your own. Read this post to learn more about scopes.

Xcode behavior

It’s always hard to switch from one IDE to another, especially with so many differences that AppCode has comparing to Xcode. We’ve tried to make this process easier in this release:

  • Selecting Xcode theme and behavior on the Welcome screen now sets several interface properties to match the Xcode behavior. This includes completion, breakpoints, keymap, tabs behavior, and more.
  • We’ve updated the bundled Xcode keymap to match Xcode 9 defaults and avoid several conflicts with the default key bindings on macOS. Learn more.
  • The bundled Xcode color scheme now has the correct font size and colors for #import directives, current line, execution point line, and method/function declaration/calls in the project.

Version control

Thanks to the wonderful work of our colleagues on the IntelliJ Platform team, all JetBrains IDEs now support Git partial commits. Include code chunks into the commit by choosing them in the Diff pane of the Commit Dialog:
Diff chunks
Move any code chunk to another changelist right in the AppCode editor:
Move to changelist

Misc

  • It’s now possible to fold control flow statements in Objective-C/C/C++ and Swift by using ⇧⌘.
  • Breadcrumbs for Objective-C/C/C++ are now available in the editor.
  • We’ve re-worked our bundled color schemes and fixed all the issues with code highlighting for Objective-C/C/C++/Swift. We’ve also added several new color schemes (such as Github) and improved Xcode schemes import.

That’s it! Explore all the new features in detail on our website and start your 30-day free evaluation to try them!

Download AppCode 2018.1

Your JetBrains AppCode team
The Drive to Develop