Introducing Phil Nash, Developer Advocate for C++, Objective-C and Swift tools

Phil NashPhil Nash has joined us recently as a Developer Advocate for C++, Objective-C and Swift tools. Here we talk to Phil about his experience and interests and introduce him to all of you.

Twitter: @phil_nash
Blog: levelofindirection
GitHub: philsquared

A: Hi Phil, and welcome to the JetBrains team! Let’s talk about you. Can you please share a bit about yourself?

P: Hi Anastasia. Thanks for having me here. A bit about me? Well, I’ve been programming since I was 9. Like most who came of programming age in the early 80s I started with various versions of BASIC on 8-bit home computers (ZX-81, ZX-Spectrum, Commodore-64, BBC Micro and others) but within a few years progressed on to assembler (mostly 6502 – but later 68000 on the Amiga, then 8086 on PC). In the early 90s I went for my first programming job, writing C & C++, which I prepared for by reading a book on C the night before. Somehow I managed bluff my way in – but I hadn’t been there long before I realised I knew more C++ than anyone still there. That was the start of my C++ journey. It started on MS-DOS, but as the 90s progressed I naturally fell into Windows – which I did exclusively for the rest of the 90s.

A: What’s your background as a developer? I know you did C++ on Windows for a very long time. How did you end up doing iOS development in Objective-C and now Swift?

P: In the 2000s I changed things up a bit. The signs were there that C++’s heyday was coming to an end and I thought I should either learn other languages, or see which industries C++ would remain strong in. I started with the latter and moved into embedded programming – specifically mobile comms – where I stayed for about five years. It was a good experience and I’m glad I did it, but I also learnt that embedded-programming was not for me. So I branched into banking, where I’ve mostly stayed until now. During that time, though, I also moved on the “other languages” front. First C#, then Python, then D and F#. At home I’d switched over exclusively to Macs, so I was interested in learning Objective-C, but it wasn’t until the iPhone AppStore launched that I gathered sufficient motivation to get past the initially steep learning curve!
Continue reading

Posted in Uncategorized | Tagged | Leave a comment

New AppCode 2016.2.3 EAP, build 162.2159.3

Hi everyone!

New AppCode 2016.2.3 EAP is ready and available to download on our confluence page. If you are using previous 2016.2.3 EAP build, the patch update is also available.

This build brings more Swift 3 features:

  • SE-0048: Generic Type Aliases (OC-13838)
  • SE-0106: Update platform configurations (OC-14138)

Also, there’s a couple of fixes for formatting and completion. The full list of fixes and improvements can be found here.

Please, note that this EAP build requires an active subscription (or you can start a 30-day evaluation period).

Posted in Announcement | Tagged , | 2 Comments

AppCode 2016.2.3 EAP

Hi everyone,

Xcode 8 with Swift 3 is released, and it’s high time to open AppCode 2016.2.3 EAP where we start delivering support for Swift evolution changes. Build 162.2097.3 is now available for download on our confluence page.

Swift 3 support opens with:

  • SE-0071: Allow (most) keywords in member references (OC-13837)
  • SE-0046: Establish consistent label behavior across all parameters including first labels (OC-14055)
  • SE-0031: Adjusting inout Declarations for Type Decoration (OC-14104)

This build also includes Reveal 2.0 integration and fix for launching apps on simulator with Xcode 8 selected in Preferences.

Full list of fixes can be found here. Please, note that this EAP build requires an active subscription (or you can start a 30-day evaluation period).

We are planning to continue work on Swift 3 and Xcode 8 support in 2016.2.x updates. Follow our blog and stay tuned!

Posted in Announcement | Tagged , | 13 Comments

AppCode 2016.2.2 update is out

AppCode 2016.2.2 bug-fix update is available for download. If using AppCode 2016.2.1, you will get an automatic update notification in the IDE.

The summary of this update includes:

Check the full release notes here.

Your AppCode team
JetBrains
The Drive to Develop

Posted in Announcement | Tagged | Leave a comment

AppCode 2016.2.2 EAP: new completion features for Swift

Hi everyone,

This week brings new 2016.2.2 EAP with new completion features on board! Let’s take a look at them right now.

Closure completion

How often do you use closures in Swift? Well, it’s not the question for us :) And that’s why we decided to spend some time to implement proper completion for them.

Starting with this build simply press Enter on the closure argument placeholder in any function and have the closure stub generated for you:
Function closure parameters
Of course, for functions with a single closure parameter AppCode will use trailing closure syntax.

What if you have a closure as a variable in your code? The answer is simple: invoke completion and quickly generate the closure stub:
Closure variable
Note, that some issues related to this feature still exist and most of them are linked as related to this base ticket.

Completion and argument placeholders for Swift subscripts.

Swift allows you to create custom subscripts and you can make them as complex as you want. But even if you prefer to keep them simple, this small feature will be really helpful.

Imagine that you have two subscripts for the same class, like in Checkerboard struct here. Now you can select needed subscript from completion list and have placeholders for subscript arguments auto-filled:
Subscript placeholders

As usual, you can use Tab to jump between placeholders.

Let’s modify one of the subscripts and add external parameter names:

Now AppCode will auto-fill external parameter names as required together with argument placeholders:
Subscript internal parameters

Finally, this build also makes internal parameter names available in completion list inside Swift functions, adds proper argument placeholders for Swift enum members and fixes the problem with tabbing inside closures.

That’s it! Download new AppCode 2016.2.2 EAP, give it a try and share you feedback in the comments section below. Note that this EAP build requires an active subscription (or you can start a 30-day evaluation period).

Your AppCode team
JetBrains
The Drive to Develop

Posted in Announcement | Tagged , | 1 Comment

AppCode 2016.2.2 EAP

Hi everyone,

Today we are starting the Early Access Program for AppCode 2016.2.2, new bug-fix update to the recently released AppCode 2016.2. Build 162.1889.10 is now available for download on our confluence page.

This build addresses the following important issues:

  • Regression in symbols building performance first appeared in AppCode 2016.1.3 (OC-13689)
  • Problem with building test targets in projects created in AppCode 2016.2.1 (OC-14056)
  • Issue with running tests for codesigned/sandboxed app (OC-12933)
  • Problem with creating new projects in Xcode 8 beta (OC-13877)
  • Problem with Swift file creation using File from Xcode template action (OC-11491)
  • Performance issue with completion in Objective-C (OC-13709).

There are also several fixes for C++ support recently implemented by CLion team and available in this build – read about them in this blog post.

The list of other fixes and improvements can be found here. Please, note that this EAP build requires an active subscription (or you can start a 30-day evaluation period).

Your AppCode team
JetBrains
The Drive to Develop

Posted in Announcement | Tagged , | Leave a comment

AppCode 2016.2.1 update is out

AppCode 2016.2.1 bug-fix update is available for download. If using AppCode 2016.2, you will get an automatic update notification in the IDE.

The summary of this update includes:

  • Improvements for error handling intentions, such as Add ‘catch’ clause, Add default ‘catch’ clause, Add try and others.
  • Override/Implement (^O/^I) popup now shows methods from extensions for Swift classes and doesn’t insert superclass @available attributes
  • Move/Subclass/Superclass/Pull Members Up/Push Members Down refactorings now work correctly (OC-13608)
  • Framework submodules imported using @import directive are now correctly resolved.
  • Fixes for debugger issues with breakpoints in project with symlinks (OC-13971) and Core Data entity properties (OC-13981).

There are also some improvements for symbols resolution in mixed Objective-C/Swift code as well as a couple of new formatting options for Objective-C. See them in the full release notes.

Your AppCode team
JetBrains
The Drive to Develop

Posted in Announcement | Tagged , | 2 Comments

AppCode 2016.2.1 EAP, build 162.1628.35

Hi,

New AppCode 2016.2.1 EAP is ready and available for download on our confluence page. The patch update is also available if you are using previous EAP build.

This build addresses a significant regression in symbols building (OC-13885). If you experienced the same problem before, we encourage you to try this build and share your feedback with us.

Your AppCode team
JetBrains
The Drive to Develop

Posted in Announcement | Tagged , | Leave a comment

AppCode 2016.3 roadmap

Hi everyone,

Today we are ready to share our future plans for the next AppCode major update.

Please note it’s a preliminary plan, so not all features listed below may be included in AppCode 2016.3.

The current plan is to include fixes related to performance, Swift 3 and Xcode 8 in one of 2016.2.x updates. All other features are scheduled for 2016.3 EAP which we plan to open around mid-September.

Your AppCode team
JetBrains
The Drive to Develop

Posted in Announcement | Tagged , | 6 Comments

New AppCode 2016.2.1 EAP, build 162.1628.11

Hi,

New AppCode 2016.2.1 EAP is ready and available for download on our confluence page. The patch update is also available if you are using previous EAP build.

The following important issues are fixed in this build:

  • Problem with symbols building appeared in the previous EAP build (OC-13991)
  • We implemented a workaround for unpleasant issue when Move/Subclass/Superclass/Pull Members Up/Push Members Down refactorings didn’t work correctly in Objective-C (OC-13608). For the moment we are leaving this ticket open to fix it properly in the future.
  • Issue when superclass @available attributes were inserted for methods when using Override/Implement (^O/^I) in Swift (OC-12982)
  • Issue with breakpoints in projects with symlinks (OC-13971)

There are also several improvements for mixed code including correct resolution for Swift nested classesnested enums and Swift functions annotated with @nonobjc in Objective-C, correction translation for Objective-C generic parameters in Swift and ability to find usages for Swift classes annotated with @objc.

In addition, several formatting fixes are available for Objective-C/C/C++ both for AppCode and CLion – read about them in this blog post.

Full release notes are available here. Please, note that this EAP build requires an active subscription (or you can start a 30-day evaluation period).

Important note: Currently we have a regression with symbol building in this build. We are working on it right now and will fix this issue before the 2016.2.1 update is released.

Your AppCode team
JetBrains
The Drive to Develop

Posted in Announcement | Tagged , | 3 Comments