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.
Jump to "What's new in Xcode 8.1?"
Jump to "What's new in Xcode 8.2?"
Jump to "What's new in Xcode 8.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).
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.
Xcode have new adaptive UI development tools and workflow.
Image Source - Apple
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.
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.
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
UIGestureRecognizeror 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.
Dragging an app onto a Simulator window installs the app.
You can take videos and screenshots of Simulator using the
xcrunXcode 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.
Update 3 (What's new in Xcode 8.3?)
1. Deprecation and Removal Notices
- Xcode 8.3 no longer supports Swift 2.3. You can migrate your projects containing Swift 2.3 code to Swift 3 syntax by opening the project and choosing
Edit > Convert > To Current Swift Syntax.
- The Automation instrument has been removed from Instruments. You need to use Xcode’s UI Testing in its place.
-exportFormatparameter of the
xcodebuildhas been removed. To set the export format, use the
-exportOptionsPlistparameter to specify an export plist file with the method key set to the desired format. For more information on the keys and values for the export plist, run
xcodebuild -helpon the command line.
2. Build System
- The Mac will no longer sleep when a build is in progress.
- Scheme pre-action and post-action scripts now set the environment variable
UDIDof the selected run destination device.
- Xcode no longer crashes when the build system copies a file with an invalid code signature.
xcodebuildno longer hangs when invoked with a project or workspace containing no schemes.
3. Core Data
- When manually generating code for Core Data entities, generated Objective-C code properly uses
ClassName+CoreDataClass.hrather than just
ClassName.hin #import directives.
xcodebuildfor a project containing a Core Data model should no longer result in
The FileMerge application now uses the same text infrastructure as Xcode. File navigation and syntax coloring are more consistent with Xcode.
Updated the Instruments user interface.
- The Xcode Organizer now supports exporting tvOS apps for Enterprise distribution.
- Speed improvements have been made to the Organizer window. Opening the Organizer with many Archives and many iTunes Connect Products should open quickly.
Fixed an issue which caused Xcode to warn about
Swift 2.3 deprecation even when the
Use Legacy Swift Language Version setting is set to
NO. Error -
"Use Legacy Swift Language Version” (SWIFT_VERSION) is required to be configured correctly for targets which use Swift. Use the [Edit > Convert > To Current Swift Syntax…] menu to choose a Swift version or use the Build Settings editor to configure the build setting directly.
Changed the user interface for managing signing certificates and provisioning profiles. Certificates are managed from the Accounts preferences pane by selecting a team and clicking Manage Certificates. Automatically managing signing is recommended, however if your app requires manually signing provisioning profiles are managed in the General tab of the project editor. Use the Provisioning Profile dropdown to import or download profiles. In addition it displays profiles that match the current signing configuration of the target.
simctl get_app_containercommand can now return the path of an app's data container or App Group containers.
simctltool of the
xcruncommand line tool has two new commands that provide additional information for filing bug reports.
simctl logverboseenables verbose logging on the specified device.
simctl diagnosecollects all relevant Simulator logs on the host and on the device, and then packages them into an archive that can be attached to bug reports.
For more information, see the help for each command by running xcrun simctl
help on the command line.
- You can invoke Siri using
Hardware > Siriafter enabling Siri in the Settings app on Simulator.
- Added the
XCTestused for writing tests which activate Siri with a voice recognition string, and for queries for elements in the Siri UI. Use the class to write UI tests for Intents and Intents UI extensions.
XCUIKeyModifierCapsLockas a preferred alternative for
XCUIKeyModifierAlphaShift. This is consistent with the addition of
NSEventModifierFlagCapsLockin macOS 10.12, as a preferred alternative for
XCTestadds new APIs to simplify writing asynchronous tests.
11. Swift Compiler
The Swift compiler can now automatically precompile Objective-C bridging headers, which can speed up Debug configuration builds (or other non-WMO builds) of mixed-source projects with large bridging headers. This feature is still experimental, and is disabled by default but can be enabled with the "Precompile Bridging Header" (
SWIFT_PRECOMPILE_BRIDGING_HEADER) build configuration setting within Xcode.