What's new in Xcode 8? [Updated to 8.1 and 8.2]

Xcode is the complete developer toolset used to create apps for Apple TV, Apple Watch, iPad, iPhone, and Mac. The Xcode development environment bundles the Instruments analysis tool, Simulator, and the OS frameworks in the form of tvOS SDKs, watchOS SDKs, iOS SDKs, and macOS SDKs.

Swift 3

Xcode 8 supports Swift 3 as well as Swift 2.3. A Swift migrator is provided to help upgrade your Swift code to the latest Swift 3 language specifications and SDK requirements.

All projects created with Xcode 8 use by default Swift 3. You can use legacy swift language version (Swift 2.3).

Signing

Now Xcode can manage signing for you automatically. Xcode will automatically create and update profiles, app IDs, and certificates. Every project created with Xcode by default enable automatically signing.

Interface Builder

Xcode have new adaptive UI development tools and workflow.
Image Source - Apple

Source Editor

Source Editor Extensions - Now you can created native Xcode source editor extension. Xcode 8 have native template to builds an Xcode Source Editor that allow you to add commands to interact with the Xcode source editor.

Code completion for images - Xcode 8 have native support for image name completion.

Jump Bar - Clicking the Jump Bar, located at the top of every editor pane, you can quickly select what information to view in the Assistant editor.

Debugging

Memory Debugging - Xcode 8 also have memory debugging feature which show how memory assigning to every object with a nice graphical representation.

Runtime issues - while debugging appear in the issue navigator, similar to compile-time issues:

  • Leaks issues identify potential leaked memory detected during debugging sessions.
  • Thread sanitizer issues identify threading-created race conditions on data changes at runtime.
  • View debugging issues identify constraints conflicts.

Documentation

The new documentation format looks gorgeous and the documentation browser is fast and easy to use.


Upated 1 (What's new in Xcode 8.1?)

1. Interface Builder Updates

  • Added Custom Gesture Recognizer to the object library. Use it for custom subclasses of UIGestureRecognizer or NSGestureRecognizer instead of a plain NSObject. This resolves an issue where a combination of stock and custom gesture recognizers on a UIView fails to compile.

  • There is a new Update Frames button at the bottom of the canvas. Click the button to update the frames of the selected objects and their children on the Interface Builder canvas.

  • And yes, the Pin button at the bottom of the canvas has been renamed to Add New Constraints.

2. Touch Bar APIs

  • Xcode 8.1 supports Touch Bar for Macs that include it, and supports adding Touch Bar functionality to your app.
  • Before using Touch Bar functionality in your app, confirm that the app is running on a macOS version that includes support for Touch Bar using a runtime check.

    For example, the following Objective-C code performs a runtime check to make sure NSTouchBar is available:

    NSClassFromString(@"NSTouchBar") != nil
    

    In Swift code, do an availability check for macOS 10.12.1, and a runtime check for Touch Bar class availability. For example:

    NSClassFromString("NSTouchBar") != nil
    

And too many issues resolved.


Upated 2 (What's new in Xcode 8.2?)

1. Touch Bar

  • Xcode 8.2 offers more Touch Bar actions and allows customizing the Touch Bar controls of the following editors and debuggers: source editor, Playground editor, Interface Builder, view debugger, and memory graph debugger. To customize the Touch Bar, open the desired editor and then choose View > Customize Touch Bar.
  • Touch Bar API is available for macOS 10.12.2 or later.

2.Simulator

  • Dragging an app onto a Simulator window installs the app.
  • You can take videos and screenshots of Simulator using the xcrun Xcode command-line utility. To take a screenshot, run the command

    xcrun simctl io booted screenshot. 
    

    To take a video, run the command

    xcrun simctl io booted recordVideo <filename>.<file extension>
    

And again too many issues resolved.



Related Article