Xcode 11 release notes

General

New Features

  • Xcode 11 beta supports development with SwiftUI.

    Note

    Tools for SwiftUI development are only available when running on macOS Catalina 10.15 beta.

  • You can now change the appearance of Xcode independently of the system appearance setting. (41165587)

  • Xcode supports uploading apps from the Organizer window or from the command line with xcodebuild or xcrun altool. Application Loader is no longer included with Xcode. (29008875)

  • LaunchServices on macOS now respects the selected Xcode when launching Instruments, Simulator, and other developer tools embedded within Xcode. For example, when you double-click an Instruments trace in Finder, the version of Instruments for the selected Xcode launches. Change which Xcode is used with xcode-select from the command line. (6757601)

  • Editors can be added to any window without needing the Assistant Editor. Editors are added using the “Add Editor” button in the jump bar or the File > New > Editor command. Each editor can now be in one of three modes: “Editor Only”, “Editor and Assistant” or “Editor and Canvas”. The latter two modes automatically show relevant content when available. When using multiple editors, the View > Editor > Focus command can be used to temporarily expand the active editor to fill the entire window, hiding other editors. For source control support, the Code Review button in the Toolbar replaces the Comparison Editor. The “Show Authors” command is now available from the Source Editor’s Editor menu. The SCM Log is now in the Inspector Area. (43806898)

Known Issues

  • Xcode 11 doesn’t support working with SwiftUI in a Mac Catalyst app. (41416222, 51201699)

Resolved Issues

  • The required packages installer no longer unnecessarily appears on macOS 10.15. (51080815)

  • The Foundation integration for the Combine framework is now available. The following Foundation and Grand Central Dispatch integrations with Combine are available: Key<wbr style="box-sizing: inherit;">Value<wbr style="box-sizing: inherit;">Observing, Notification<wbr style="box-sizing: inherit;">Center, Run<wbr style="box-sizing: inherit;">Loop, Operation<wbr style="box-sizing: inherit;">Queue, Timer, URLSession, Dispatch<wbr style="box-sizing: inherit;">Queue, JSONEncoder, JSONDecoder, Property<wbr style="box-sizing: inherit;">List<wbr style="box-sizing: inherit;">Encoder, Property<wbr style="box-sizing: inherit;">List<wbr style="box-sizing: inherit;">Decoder, and the @Published property wrapper. (51241500)

  • Issue text is no longer light when using a light theme with a dark system appearance. (48230278)

Apple Clang Compiler

New Features

  • Clang now provides a mechanism for controlling exit-time destructor registration. You can disable these globally with the flag -fno-c++-static-destructors, or apply the attribute [[clang::<wbr style="box-sizing: inherit;">no<wbr style="box-sizing: inherit;">_destroy]] to disable the destructors of specific variables. The attribute [[clang::<wbr style="box-sizing: inherit;">always<wbr style="box-sizing: inherit;">_destroy]] was also added to enable destructors of specific variables when -fno-c++-static-destructors is used. (21734598)

  • As an extension, C++11 enums with fixed underlying types are now supported in all language modes. (43831380)

  • Deprecation warnings will be issued when standard library facilities that were deprecated in the active Standard version are used. (46881474)

  • Stack checking is on by default on all platforms to prevent memory corruptions. (25859140)

  • The machine code outliner is on by default under -Oz. It reduces code size by identifying identical code sequences across functions. Such sequences are encapsulated (“outlined”) in a single compiler generated function. Each original code sequence is replaced with a call to that outlined function. (46385499)

  • In order to improve performance and security the static linker (ld) now moves globals that are marked as constant into a new segment: _<wbr style="box-sizing: inherit;">_DATA<wbr style="box-sizing: inherit;">_CONST. These globals may consist of compiler generated pointers that the dynamic linker (dyld) needs to fix up during load, but are otherwise constant such as vtables and explicitly declared constant pointers. Once dyld has finished loading the image it makes _<wbr style="box-sizing: inherit;">_DATA<wbr style="box-sizing: inherit;">_CONST readonly. This change doesn’t impact well behaved code, but may break code that depends on undefined behavior such as using a type pun to write to a pointer that’s declared as const. (50898833)

  • Clang now supports the C++17 <filesystem> library for iOS 13, macOS 10.15, watchOS 6, and tvOS 13. (50988273)

Known Issues

  • When using manual retain-release, exceptions thrown from the following methods or any functions or methods they transitively call might not be caught: release, autorelease, retain, alloc, or alloc<wbr style="box-sizing: inherit;">With<wbr style="box-sizing: inherit;">Zone. (50253394)

Resolved Issues

  • An if (@available( … )) check works properly when linked by Xcode into an app or framework that’s running on iOS 13, macOS 10.15, watchOS 6, or tvOS 13. (51109405)

  • The <experimental/optional> and <experimental/variant> headers are removed. Use <optional> and <variant> from C++17 instead. (50175894)

  • Resolved a long compile-time issue in the loop-invariant code motion pass of the optimizer. (39648918)

Asset Catalog

New Features

  • Assets can now be cut, copied, pasted, and duplicated using the menu or keyboard shortcuts. (27107912)

Known Issues

  • Your app might fail to build if it contains a launch image. The failure message resembles the following: “The launch image set named <image set name> did not have any applicable content.” Launch images are deprecated and should be removed; use a launch storyboard or .xib file instead. (50210495)

    Workaround: Clear the build setting ASSETCATALOG<wbr style="box-sizing: inherit;">_COMPILER<wbr style="box-sizing: inherit;">_LAUNCHIMAGE<wbr style="box-sizing: inherit;">_NAME.

  • Localized assets in an asset catalog aren’t matched to the user-preferred languages and locales. (49565973)

Resolved Issues

  • Xcode no longer crashes if you press Command-U or select an asset catalog in the navigator area. (52211868)

  • Fixed a crash that could occur when using Interface Builder’s image inspector if the asset catalog contained a symbol and bitmap image assets with the same name. (51279661)

  • New user-defined images added to the asset catalog show up in the image view image combo box. (51090225, 51120715)

  • Corrected an issue that caused the NSData<wbr style="box-sizing: inherit;">Asset asset variation for Mac Catalyst to return nil at runtime. (50022757)

  • Resolved an issue that caused NSData<wbr style="box-sizing: inherit;">Asset asset lookup to return the wrong data when an asset had variants specified for iPad and Mac Catalyst. (49990047, 51278348, 51288447)

Build System

New Features

  • You can use an unlimited number of Swift files in a target if you set the build setting USE<wbr style="box-sizing: inherit;">_SWIFT<wbr style="box-sizing: inherit;">_RESPONSE<wbr style="box-sizing: inherit;">_FILE to YES. (35879960)

  • Run script phases and custom build rules may declare and emit a dependencies file, in the Makefile-style .d format output used by some compilers and build tools. The build system checks the files listed for changes during subsequent builds when determining if the rule or phase should be executed. (49226986)

  • Projects may now use custom build rules to process header files (APPLY<wbr style="box-sizing: inherit;">_RULES<wbr style="box-sizing: inherit;">_IN<wbr style="box-sizing: inherit;">_COPY<wbr style="box-sizing: inherit;">_HEADERS). (48185100)

  • Custom build rules can now specify additional, static input files that are used during execution. These resolved input file paths are supplied to rule scripts using the SCRIPT<wbr style="box-sizing: inherit;">_INPUT<wbr style="box-sizing: inherit;">_FILE_# environment variables. (49645853)

  • Xcode removes some entries from the Info<wbr style="box-sizing: inherit;">.plist file of a product at build time if the entries are not appropriate for the platform being built for, which is useful for targets which are configured to build for multiple platforms. This behavior can be disabled by setting the build setting DISABLE<wbr style="box-sizing: inherit;">_INFOPLIST<wbr style="box-sizing: inherit;">_PLATFORM<wbr style="box-sizing: inherit;">_PROCESSING to YES, in which case the target must assume the responsibility of managing these entries appropriately. (47797497)

  • Custom build rules can now declare that they should run once per architecture (the default), or run only once across all architectures. This is useful for custom rules which are architecture-neutral, for example, code generation tools that generate files that don’t differ per architecture. (47716990)

  • XCFramework make it possible to bundle a binary framework or library for multiple platforms —including iOS devices, iOS simulators, and Mac Catalyst — into a single distributable .xcframework bundle that your developers can use within their own applications. An .xcframework bundle can be added to an Xcode target’s Link Libraries phase and Xcode uses the right platform’s version of the included framework or library at build time. Creation of frameworks is supported from the command line using xcodebuild -create-xcframework. Frameworks or libraries bundled in an XCFramework should be built with the Build Libraries for Distribution build setting set to YES. (49948269)

Known Issues

  • Watch targets that override the Architectures build setting to just armv7k may fail to process in TestFlight and Xcode’s enterprise distribution workflow. (51104990)

    Workaround: Build the watchOS app with armv7k and arm64<wbr style="box-sizing: inherit;">_32.

  • Incremental builds to may fail to codesign properly for non-source related changes to your project, such as resource file modifications, which can result in the app failing to launch. (41254808)

    Workaround: Change a source file within the same target to trigger the codesignprocess, or perform a clean build.

  • Updating your iOS app for Mac Catalyst might show new error diagnostics stating that certain frameworks or functionality is not available on the Mac. If one of these diagnostics is shown erroneously, you can disable it by setting the VALIDATE<wbr style="box-sizing: inherit;">_WORKSPACE build setting to NO. (50607174)

  • The new build system doesn’t evaluate a leading tilde (~) in paths in build settings to the user’s home directory. (41339901)

    Workaround: Use $(HOME) instead.

  • If a target enables RUN<wbr style="box-sizing: inherit;">_CLANG<wbr style="box-sizing: inherit;">_STATIC<wbr style="box-sizing: inherit;">_ANALYZER, then single file processing commands — such as Compile, Preprocess, Show Assembly — won’t work correctly because they generate the static analyzer output file rather than the appropriate output. (43340227)

    Workaround: Disable RUN_CLANG_STATIC_ANALYZER in the target.

  • If the build of an app-hosted test target — where TEST<wbr style="box-sizing: inherit;">_HOST is defined — fails, subsequent builds may fail when signing the app product because the test target is incomplete and unsigned when the initial signing of the app occurs. (43402096)

    Workaround: Perform a clean build. Or, manually delete the unsigned test bundle from inside the app target’s product and rebuild.

  • Targets which override the Architectures and Valid Architectures build settings for iOS may need to remove or conditionalize the overrides to build correctly for Mac Catalyst. (51074742)

  • When using Xcode on macOS 10.15, some files — especially .xib files and storyboard files — might be copied rather than compiled, resulting in an incorrect build product. (49351105)

    Workaround: In the File Inspector for the file which is being copied, toggle the Type popup away from Default - <some type> then back to Default. This resets the file type in the project file to the correct type and enables the build system to match it to the correct tool to process it.

  • When building for the first time users may get a popup stating that SimulatorTrampoline would like access to Desktop Files because ibtool running in simulator needs access to these files to compile storyboards. (51114450)

    Workaround: Allow access to the files in the prompt.

  • Some features that aren’t supported by the legacy build system are ignored instead of emitting an error. This includes use of build rule or script phase dependency files, input declarations for custom build rules, and the APPLY<wbr style="box-sizing: inherit;">_RULES<wbr style="box-sizing: inherit;">_IN<wbr style="box-sizing: inherit;">_COPY<wbr style="box-sizing: inherit;">_HEADERS build setting. (51318274)

Resolved Issues

  • The indexer doesn’t wait for a build to be performed before indexing Swift response files. (52110336)

  • After closing and reopening a project, or when performing incremental builds using xcodebuild, diagnostics from prior builds regarding incompatible frameworks, app extensions, and code signing settings now are displayed with a description in the Issue Navigator and Build Log. (51131884)

  • By default, Xcode’s new build system doesn’t detect changes in directories declared as inputs to shell script build phases. Enabling the build setting ALLOW<wbr style="box-sizing: inherit;">_RECURSIVE<wbr style="box-sizing: inherit;">_SCRIPT<wbr style="box-sizing: inherit;">_INPUTS causes it to do so. However, if any of the files inside such a directory are generated by a task that depends on the output of the script phase, then a dependency cycle error is emitted and must be resolved by restructuring the target. (41126633)

  • The build system no longer crashes when building some targets that use On Demand Resources. (49072702)

Command Line Tools

Resolved Issues

  • pip3 is available using the default shell PATH when using macOS Catalina 10.15 beta 4. (50877974)

  • Python 3 is available in the Command Line Tools package. (51727440)

Core Data

New Features

  • There is now a checkbox that makes it possible for you to distinguish whether the default value of a string attribute should be nil or the empty string. When set, the default value is the empty string if no other default is specified. (26534406)

  • The Xcode 11 data model file format no longer writes out or preserves deprecated Sync Services information for entities or properties. (32524648)

  • The Core Data data model editor has added support for derived attributes when using the Xcode 11 data model file format and an appropriate deployment target. (45567066)

  • When creating an application using Core Data, there is a new checkbox to also enable CloudKit support for the data model’s default configuration. This can also be enabled for an existing data model using the new configuration inspector. When a data model configuration supports CloudKit, the data model editor performs additional validation to ensure the model conforms to the requirements for Core Data CloudKit support. (51126024)

Resolved Issues

  • When used with CloudKit, an attribute in a Core Data model must either be optional or have a default value. Xcode 11 beta 3 and earlier incorrectly required that such an attribute be both optional and have a default value. (51593507)

  • Using the UUID attribute type, the URI attribute type, or the persistent history feature properly generates an error when used with a data model file format prior to the format used in Xcode 9. (50188371)

Create ML

New Features

  • Object detection and text classification templates are available in Create ML, joining the image classification and sound classification templates. Use these templates starting with macOS 10.15 beta 3. (52009035)

  • You can now classify sounds live directly from the microphone using Sound Classification preview. (52131594)

Known Issues

  • The progress graph in the sound classifier might not update correctly. (52911042)

Debugging

New Features

  • The view debugger now shows the names of NSImage instances in the inspector. (35516797)

  • The graphical filter in the Size inspector for debugging view hierarchies identifies which attributes on the selected view are constrained. Selecting attributes in the filter narrows the displayed constraints to ones matching that attribute. Standard modifier keys such as Shift and Command can be used to expand the selection showing the union of constraints matching those attributes. (44864394)

  • You can now debug the view hierarchies of watchOS apps. (45173634)

  • You can now simulate network conditions and thermal states for a connected device from the Devices and Simulators window. (44608479)

  • The view debugger shows UIWindow<wbr style="box-sizing: inherit;">Scene instances in the debug navigator and canvas. (45378799)

  • View debugging can be disabled in the scheme options. (45928299)

  • The Size inspector for debugging view hierarchies has more details about constraints including a filter, hover highlighting in the editor, and better descriptions. (16153188)

  • The view debugger supports debugging Mac Catalyst apps. (37507479)

  • The view debugger inspector shows content<wbr style="box-sizing: inherit;">Tint<wbr style="box-sizing: inherit;">Color for NSImage<wbr style="box-sizing: inherit;">View and NSButton. (49506123)

  • The view debugger now shows the names of iOS named and system colors. (45162028)

  • The view debugger shows trait collection information. (45161975)

  • The view debugger shows the names of UIImage instances. (45327089)

  • The view debugger now shows symbol information, like baseline and midline. (49508874)

  • The debug bar appearance switcher supports changing between dark and light modes on iOS. (45161907)

  • The “Pause on issues” checkboxes in the Diagnostics tab of the Scheme Editor are replaced by regular breakpoints. You can use the Breakpoints Navigator to create a Runtime Issue Breakpoint. (31409112)

  • Override system settings like appearance, dynamic type, and accessibility options for the debugged process using Environment overrides, accessible from the debug bar. (45848655)

  • The debugger supports working with crash logs (.crash files). (48408310)

  • The debugger can debug tvOS Top Shelf extensions. (48869701)

  • Xcode can prefer using Wi-Fi to connect to a Watch when installing or debugging an app. (50313856)

  • The VoiceOver actions menu for breakpoints includes an action to jump to the corresponding line of code. (44941178)

  • When debugging views with constraints, double clicking a constraint in the size inspector selects that constraint in the editor and show information for the constraint in the inspector. (18842905)

Known Issues

  • In watchOS 6, an apns-push-type key is required in the APNs request header. Specify alert or background for the type of notification being sent. The template APNs files in Xcode don’t contain this header by default. (50709418)

  • The energy gauge report doesn’t show the conditions active on the device. (52349364)

  • Debugging symbols might be unavailable for Apple Watch. (26995636)

    Workaround: Verify that you have a working internet connection and that you’re signed into your Apple ID in Preferences > Accounts.

  • You can’t debug on-device previews. (51183159)

    Workaround: Debug live previews on the canvas or debug the app on the device by directly deploying it there.

  • On macOS 10.15, dragging the process item in the Debug Navigator might crash Xcode. (48453949)

  • Debugging a watch app in a watchOS simulator might fail the first time the simulator boots. (50263836)

    Workaround: Wait until the watch simulator finishes booting, then start debugging it again.

  • App and thermal state tracks in the Energy Impact gauge might stop updating. (50968828)

    Workaround: Stop and rerun the app.

Resolved Issues

  • Debugging is available for on-device previews. (47668840, 51139546)

  • The Environment Overrides button appears in the debug bar for watchOS and iOS app extension targets without you needing to pause the process first. (51203640)

  • A preview debug session no longer ends when the preview isn’t visible. (50593619)

  • Runtime issue breakpoints added to running processes behave correctly. (49433870)

  • Items in the view debugger can be revealed in the Debug navigator from the context menu. (18598643)

  • Improved the formatting of Swift class names when debugging the view hierarchy. (39679411)

  • Fixed an issue where the debug console would display a page column guide. (49693398)

  • Breakpoints support the VoiceOver command to open the shortcut menu. (44940944)

Deprecations

  • The WatchKit framework is no longer included in the iOS SDK. If you’re using WatchKit APIs from iOS, you need to remove this use. The WatchKit framework remains available on watchOS. If you’re using WatchKit APIs from iOS to infer availability of features on the paired Apple Watch, include information about your use case when you submit feedback to Feedback Assistant. (49707950)

  • Scripting language runtimes such as Python, Ruby, and Perl are included in macOS for compatibility with legacy software. In future versions of macOS, scripting language runtimes won’t be available by default, and may require you to install an additional package. If your software depends on scripting languages, it’s recommended that you bundle the runtime within the app. (49764202)

  • Use of Python 2.7 isn’t recommended. This version is included in macOS for compatibility with legacy software. Future versions of macOS won’t include Python 2.7. Instead, it’s recommended that you run python3 in Terminal. (51097165)

  • The Quartz Composer framework is deprecated. Starting in macOS 10.15, the Quartz Composer framework will be marked as deprecated and remain present for compatibility purposes. Transition to frameworks such as Core Image, SceneKit, or Metal if your app is using Quartz Composer. (50911608)

  • Command line tool support for Subversion — including svn, git-svn, and related commands — is no longer provided by Xcode. If you need Subversion or related command line tools, install the Command Line Tools package by running xcode-select --install. (50266910)

Devices

Known Issues

  • Testing using xcodebuild might cause a crash when running to multiple destinations concurrently. (52962341)

    Workaround: Disable concurrent destination testing by passing the -disable-concurrent-destination-testing flag to xcodebuild.

  • Specifying a run destination using a device or simulator name from xcodebuild doesn’t resolve correctly. (52081230)

    Workaround: Specify the destination by platform and ID instead of the name.

  • Building and running a watchOS app on a device might show a system spinner indefinitely. (51726238)

    Workaround: Reboot the device.

Resolved Issues

  • Resolved an issue that prevented running a watch app built with the thread sanitizer enabled on older versions of watchOS. (49288795)

  • Resolved an issue with half point frame differences caused by switching between Retina and non-Retina monitors. (20175879)

Instruments

New Features

Known Issues

  • When profiling a standalone watchOS app, an iOS simulator is launched. (49788679)

Resolved Issues

Interface Builder

New Features

  • Interface Builder supports iOS 13 UIVisual<wbr style="box-sizing: inherit;">Effect<wbr style="box-sizing: inherit;">View blur and vibrancy visual effects. (48023286)

  • Interface Builder supports iOS 13 UIActivity<wbr style="box-sizing: inherit;">Indicator<wbr style="box-sizing: inherit;">View styles. (48573772)

  • The iOS home indicator color now adapts to light and dark canvas appearances. (48610782)

  • Interface Builder supports customizing UIButton symbol configurations. (51323174)

  • Interface Builder supports the new layout TVCollection<wbr style="box-sizing: inherit;">View<wbr style="box-sizing: inherit;">Full<wbr style="box-sizing: inherit;">Screen<wbr style="box-sizing: inherit;">Layout on Apple TV. (47598895)

  • UIView<wbr style="box-sizing: inherit;">Controller instances now default to the Automatic modal presentation mode. Modal presentation segues can override this setting. (48129590)

  • Interface Builder supports Dark Mode on iOS. (45314199)

  • Interface Builder’s device bar lets you switch between the light and dark appearance for iOS apps. (45282451)

  • You can add SwiftUI hosting controllers, such as UIHosting<wbr style="box-sizing: inherit;">Controller, to connect a storyboard controller flow to a hosting controller that manages a SwiftUI view hierarchy. You can populate the contents of a hosting controller in Interface Builder by providing a custom subclass that programmatically sets the root<wbr style="box-sizing: inherit;">View of the controller. (46039344)

    You can also set the root view of a UIHosting<wbr style="box-sizing: inherit;">Controller or NSHosting<wbr style="box-sizing: inherit;">Controllerusing a Segue Action.

  • The object library now matches the selected system-wide appearance. (50874168)

  • The NSStack<wbr style="box-sizing: inherit;">View inspector now allows configuring negative spacing. (49012055)

  • NSSwitch is available when running on macOS 10.15. (47566686)

  • Cells in a UITable<wbr style="box-sizing: inherit;">View can now self size with Auto Layout constrained views in the canvas. To opt into the behavior for existing table views, enable “Automatic” for the table view estimated item size, and “Automatic” for cell’s height in the Size inspector. (35735970)

  • NSView and UIView have a layout mode option in the Size inspector to explicitly opt into “translates autoresizing mask into constraints”. The default setting is “Automatic”, which is the existing behavior. “Automatic” implies that “translate autoresizing mask into constraints” is off when a view affect by constraints in the storyboard or .xib file, but on if unconstrained. (37352354)

  • Improved the reliability of Auto Layout constraint generation with “Add Missing Constraints”. (43694622)

  • The contents of a UIScroll<wbr style="box-sizing: inherit;">View are scrollable within the canvas, once its subviews are fully constrained with Auto Layout constraints. (44727961)

  • Cells in a UICollection<wbr style="box-sizing: inherit;">View can now self size with Auto Layout constrained views in the canvas. To opt into the behavior for existing collection views, enable “Automatic” for the collection view’s estimated size, and “Automatic” for cell’s size from the Size inspector.If deploying before iOS 13, you can activate self sizing collection view cells by calling perform<wbr style="box-sizing: inherit;">Batch<wbr style="box-sizing: inherit;">Updates(_:<wbr style="box-sizing: inherit;">completion:) during view<wbr style="box-sizing: inherit;">Did<wbr style="box-sizing: inherit;">Load(). (45617083)

  • In inspector font popovers, the Family popup now renders menu items as a preview of the applicable font. (31484154)

  • Update Frames can now be performed document-wide for misplaced frames, without selecting a view. (22076710)

  • Content and Frame Layout guides are supported for UIScroll<wbr style="box-sizing: inherit;">View and can be enabled in the Size inspector for more control over your scrollable content. (29711618)

  • Interface Builder supports the new Apple TV tab bar style. (47598643)

  • The new WKInterface<wbr style="box-sizing: inherit;">Text<wbr style="box-sizing: inherit;">Field interface element is available for watchOS. (45754186)

  • The canvas supports customizing interfaces for Mac Catalyst apps. (37797710)

  • SF Symbols are available in image inspector properties. (47532055)

  • The UIImage<wbr style="box-sizing: inherit;">View inspector includes support for configuring symbols. (47797500)

  • A view controller method annotated with the new @IBSegue<wbr style="box-sizing: inherit;">Action attribute can be used to create a segue’s destination view controller in code, using a custom initializer with any required values. This makes it possible to use view controllers with non-optional initialization requirements in storyboards. Create a connection from a segue to an @IBSegue<wbr style="box-sizing: inherit;">Action method on its source view controller. On new OS versions that support Segue Actions, that method will be called and the value it returns will be the destination<wbr style="box-sizing: inherit;">View<wbr style="box-sizing: inherit;">Controller of the segue object passed to prepare(for:<wbr style="box-sizing: inherit;">sender:). Multiple @IBSegue<wbr style="box-sizing: inherit;">Action methods may be defined on a single source view controller, which can alleviate the need to check segue identifier strings in prepare(for:<wbr style="box-sizing: inherit;">sender:). (47091566)

    An IBSegue<wbr style="box-sizing: inherit;">Action method takes up to three parameters: a coder, the sender, and the segue’s identifier. The first parameter is required, and the other parameters can be omitted from your method’s signature if desired. The NSCoder must be passed through to the destination view controller’s initializer, to ensure it’s customized with values configured in storyboard. The method returns a view controller that matches the destination controller type defined in the storyboard, or nil to cause a destination controller to be initialized with the standard init(coder:) method. If you know you don’t need to return nil, the return type can be non-optional.

    In Swift, add the @IBSegue<wbr style="box-sizing: inherit;">Action attribute:

    In Objective-C, add IBSegue<wbr style="box-sizing: inherit;">Action in front of the return type:

Known Issues

  • Overriding cellular bars with simctl has no effect (51698044)

  • When viewing an iPad storyboard with the Mac device selected in the device bar, custom fonts added by the project don’t render. (48528374)

  • If a glyph has a light and dark mode representation, the dark mode representation won’t be picked up in the storyboard. (50354204)

  • Storyboards and .xib files created with Xcode 11 that contain Quaternary System Fill Color, Secondary System Fill Color, Tertiary System Fill Color, or System Fill Color crash previous versions of Xcode when opened. (51233884)

  • UIKit menus configured in Interface Builder are available at runtime on macOS, but not on iOS. (51077651)

  • ARView objects in Apple TV storyboards crash Interface Builder rendering. (50971800)

  • The iOS status bar is not displayed in the Interface Builder canvas. (48639919)

  • View controller scenes that contain menu commands created with Xcode 11 cause the app to crash when running on iOS 12. (50871098)

  • Storyboards and .xib files in iOS and tvOS template projects created with Xcode 11 need to be saved with Xcode 11 at least once before opening them in previous versions of Xcode. (51230799)

  • UILabel, UIText<wbr style="box-sizing: inherit;">Field, and UIText<wbr style="box-sizing: inherit;">View instances with alignment set to “center” or “right” in Interface Builder have the wrong alignment when designing for or running on macOS. (50062524)

    Workaround: Reapply the desired alignment in awake<wbr style="box-sizing: inherit;">From<wbr style="box-sizing: inherit;">Nib().

  • If a symbol has a light and dark mode representation, the dark mode representation isn’t picked up in the storyboard. (50354204)

  • Projects created with Xcode versions prior to Xcode 11 beta retain their default custom color when opened in Xcode 11 beta. (50828300)

Resolved Issues

  • Fixed collection view cell self-sizing layout issues coming from storyboards and .xib files when compiling and deploying to iOS 12.4 and later (49537998)

  • Resolved an issue that prevented the light or dark interface style group in the Interface Builder device bar from taking effect when viewing a storyboard for a Mac Catalyst app. (50929581)

  • Xcode doesn’t crash when opening a .xib file or storyboard file with a custom view that’s marked as IBDesignable if that project contains Swift packages. (50551974)

  • Dragging out a new iOS Main Menu no longer causes a crash if you drag across an existing menu in the canvas. (51237295)

  • Resolved a performance regression associated with opening storyboards and .xib files. (51282755)

  • The inspector for UIDate<wbr style="box-sizing: inherit;">Picker now shows only the properties applicable to the selected mode. (26726319)

  • The preview editor’s menu for adding iOS devices now matches the current canvas orientation. (48818470)

  • Preview editor items now preserve the configured locale or pseudo-locale. (48303753)

  • UIDate<wbr style="box-sizing: inherit;">Picker objects configured as Count Down in Interface Builder now use the specified duration at runtime. (23426425)

  • The Embed In bar button is also visible in documents not using Auto Layout. (46855203)

  • Subclasses of NSControl now have unique icons in the library and document outline. (24231920)

Library

Known Issues

  • Fixed an issue where child view controllers had incorrect background colors when dragged from the library. (50388578)

  • All UI controls from the library correctly switch to dark mode. (49830961)

Linking

Known Issues

  • Targets that contain Swift code with the Enable Bitcode build setting set to Yes fail to link correctly when built with the Archive action. (52804818)

    Workaround: Add a custom build setting with the name LD<wbr style="box-sizing: inherit;">_VERIFY<wbr style="box-sizing: inherit;">_BITCODE, and set it to NO. Make a note to yourself to delete this custom build setting once this issue is resolved.

LLDB

New Features

  • LLDB’s Python scripting is now based on Python 3. If you are using Python extensions that aren’t compatible with Python 3, they will break. To help with the transition, you can run in Python 2 mode by setting a default:

    Python 2 support will be removed in the future. (47806994)

  • Swift Decimal values have a data formatter in LLDB, making them display in a readable way. (38983073)

  • LLDB now supports examining Swift types that are compiled with support for library evolution. (48018240)

Resolved Issues

  • Redeclaring self in Swift code works properly with LLDB. (39611934)

  • The Swift REPL and LLDB’s python scripting work properly when the python binary in PATH isn’t the system one. (40961425)

  • Multiple issues that prevented LLDB from accessing variables while debugging XCTesttests are resolved. (41471338)

Localization

New Features

  • You can now localize assets in asset catalogs. Localization is enabled in the attribute inspector. (12948139)

  • The settings bundle is now included in Xcode Localization Catalogs. (12495197)

  • The manual page for genstrings has documents its behavior in more detail. (19709369)

  • The genstrings tool is enhanced and merged with the extract<wbr style="box-sizing: inherit;">Loc<wbr style="box-sizing: inherit;">Strings tool. The previous version is deprecated, has been renamed to ogenstrings, and must now be invoked with xcrun. Any scripts that invoked xcrun extract<wbr style="box-sizing: inherit;">Loc<wbr style="box-sizing: inherit;">Strings should be changed to use genstrings, but a compatibility symbolic link is currently provided that invokes genstrings. (19709395)

  • The genstrings tool now takes an -encoding argument that allows specification of the file encoding for input files. (48224455)

  • The updated version of genstrings has improved error reporting, and may report errors in scenarios that were previously silently accepted. As an example, genstrings My<wbr style="box-sizing: inherit;">App/* will fail if the MyApp directory contains a subdirectory, because genstrings file arguments are required to be source files. (48304658)

  • The genstrings tool can now take any number of -s arguments to specify additional macros similar to NSLocalized<wbr style="box-sizing: inherit;">String or functions from which to extract strings. For example, genstrings -s My<wbr style="box-sizing: inherit;">Error<wbr style="box-sizing: inherit;">Sring -s My<wbr style="box-sizing: inherit;">UIString myfile<wbr style="box-sizing: inherit;">.swift treats both My<wbr style="box-sizing: inherit;">Error<wbr style="box-sizing: inherit;">String and My<wbr style="box-sizing: inherit;">UIString as equivalent to NSLocalized<wbr style="box-sizing: inherit;">String. (48734596)

    Note

    Using -s arguments doesn’t suppress support for NSLocalized<wbr style="box-sizing: inherit;">String or CFCopy<wbr style="box-sizing: inherit;">Localized<wbr style="box-sizing: inherit;">String.

  • The Export for Localization command and genstrings tool now support multiline Swift and Objective-C strings, and have relaxed whitespace requirements when recognizing arguments to NSLocalized<wbr style="box-sizing: inherit;">String. (50516442)

  • The performance of the Export for Localization command is substantially improved. (40548416)

Resolved Issues

  • The Export for Localization command and genstrings tool no longer crash on escaped, high Unicode code points such as \U0001F603. (18898240)

  • Importing a localized string that contains embedded newlines now produces strings files with escaped \n sequences. (44649979)

  • XLIFF files produced by Xcode localization export now add xml:<wbr style="box-sizing: inherit;">space="preserve" to <trans-unit /> elements to ensure that whitespace is preserved. (44928807)

Mac Catalyst

Known Issues

  • On-Demand Resources (ODR) aren’t supported on macOS, so when you build an iOS target that uses ODR for the Mac, you’ll need to make some changes. Xcode automatically disables ODR so that those resources are built into the bundle of the target building them, rather than in separate asset bundles. Update your code to load those resources from the app bundle rather than from asset bundles. (50358184)

  • The color asset variant for Mac Catalyst isn’t passed at runtime. (51113192)

  • The NSData<wbr style="box-sizing: inherit;">Asset asset variation for Mac Catalyst returns nil at runtime. (50022757)

Organizer

New Features

  • The new Metrics organizer shows battery life and performance analytics for your app to help you drive optimizations.

  • Metrics are reported for your app when distributed on the App Store and after sufficient field use.

  • The available metrics are battery drain, launch time, hang rate, memory, and disk writes.

  • You can filter data by device and usage characteristics. (43028903)

Playgrounds

Known Issues

  • SwiftUI live views and inline results in playgrounds aren’t supported in Xcode 11 beta. (42226387)

  • Playgrounds in a workspace can’t import targets from a Swift package. (47668990)

  • Quick looks and inline result previews of views in UIKit may display as blank rectangles. (50787870)

Resolved Issues

  • The top few lines of a playground no longer become stuck under the top of the window. (47529397)

  • Fixed a delay that could occur when running a playground on macOS 10.15 with a slow or unreliable internet connection. (48995467)

  • Playgrounds no longer crash if your code references a view off of the main thread. (46579594)

Project Navigator

New Features

  • Xcode can find assets in your workspace or project using the Find navigator. The Asset catalog Editor also supports find and replace, and you can rename assets using Replace. (14279237)

Reality Composer

New Features

  • Added support for object anchors in AR scenes. (48774003)

Known Issues

  • Objects added from the content library in Reality Composer on macOS are incompatible with build 1A68 of Reality Composer on iOS and iPadOS.

  • The RealityKit ARView class isn’t found at runtime when loading a storyboard if its module isn’t specified in Interface Builder. The following error message displays in the Xcode console: “Unknown class ARView in Interface Builder file.” (50840767)

    Workaround: ARView is a Swift view class, and requires both its class name (ARView) and module (RealityKit) to be specified in the Interface Builder inspector.

  • RealityKit’s ARView class is not found at runtime when loading a storyboard if RealityKit isn’t otherwise used within the Xcode project. The following error message displays in the Xcode console: “Unknown class _TtC10RealityKit6ARView in Interface Builder file.” (50900969)

    Workaround: This issue occurs if you import RealityKit and define an @IBOutlet with a type of ARView, but don’t otherwise use RealityKit symbols in your project. To ensure that RealityKit is loaded at runtime with this configuration, manually add RealityKit to your target’s Link Binary with Libraries build phase.

Resolved Issues

  • Improved support for imported USDZ files. (49630946)

  • Improved support for manipulating objects. (50036512)

  • Notification triggers and notify actions from other scenes no longer appear in scenes in which they weren’t authored. (51008577)

  • The .reality file generated automatically by Xcode from a Reality Composer project contains all scenes in the project. (51048599, 51868814)

  • RealityKit is available in iOS simulators. (48603396)

Server

Known Issues

  • When editing bots for a project that authenticates with SSH, Xcode Server may disable some project-specific settings. (51009722)

    Workaround: Either replace repositories in the Repositories tab when editing the bot or use HTTPS-based authentication with your Xcode Server integrations.

  • Xcode Server can cause a crash when a bot is created from the context menu of any integration. (51082255)

    Workaround: Create bots from the context menu of the server or from the Product menu in Xcode.

  • Xcode Server doesn’t currently support Mac Catalyst. (50602873)

  • Build issues occurring in a source file built by multiple targets may be marked resolved and reintroduced on every integration. (46523551)

Resolved Issues

  • Swift packages consistently appear in the Xcode Server bot configuration Repositories pane. (50058808)

  • Resolved an issue where Xcode Server failed to automatically sign projects that use the iCloud, Application Groups, Apple Pay, or Wallet capabilities. (41008156, 44704694)

Signing and Distribution

New Features

  • Xcode 11 beta 4 supports the new maccatalyst. bundle identifier prefix. As a result, provisioning profiles used by Mac Catalyst apps must be regenerated to reflect the new prefix. If you’re using automatic signing, a new provisioning profile is generated automatically. If you’re using manual signing, log into your developer account and regenerate the provisioning profiles used by your Mac Catalyst apps. (52535178)

    If you’re using a previous Xcode 11 beta and already have a provisioning profile for your app, it continues to work until you update to Xcode 11 beta 4. If you don’t already have a provisioning profile for your app, you need to update to Xcode 11 beta 4 in order to generate one with the correct app ID prefix.

    If your code contains references to your bundle identifier, you will need to update those references.

  • Signing and capabilities settings are now combined within a new Signing & Capabilities tab in the Project Editor. The new tab enables using different app capabilities across multiple build configurations. The new capabilities library makes it possible to search for available capabilities. (35254597)

  • Xcode 11 supports the new Apple Development and Apple Distribution certificate types. These certificates support building, running, and distributing apps on any Apple platform. Preexisting iOS and macOS development and distribution certificates continue to work, however, new certificates you create in Xcode 11 use the new types. Previous versions of Xcode don’t support these certificates. (45527608)

Known Issues

  • If your iPad app uses private entitlements, those entitlements may not be available for use in your Mac Catalyst app. (51599125)

    Workaround: Generate a new entitlements file for your Mac Catalyst app and exclude the unavailable entitlements by following these steps:

    1. Select your entitlements file in the project navigator then select File > Duplicate.

    2. Give your Mac Catalyst entitlements file a unique name and save it.

    3. Remove any unavailable private entitlements from your new Mac Catalyst entitlements file.

    4. Navigate to your Mac Catalyst app’s build settings in the project editor and locate the Code Signing Entitlements build setting.

    5. Expand the build setting so that you can view its value for all build configurations. For each of your build configurations, click the plus (+) button to add a conditional setting.

    6. From the popup button in each conditional setting, select Any macOS, then edit the conditional setting’s value to refer to the name of your new Mac Catalyst entitlements file.

  • Automatic signing may fail with the error “This request is forbidden for security reasons” when creating a development certificate. (50964225)

    Workaround: You may have hit a certificate limit for your account. View your Apple Developer account in Safari and revoke any development certificates that you aren’t using, then try again in Xcode.

  • The archive action does not code sign command-line executable products from Swift packages. (48717735)

    Workaround: Manually sign archived executables using the codesign tool before distributing them.

  • Mac provisioning profiles that you have manually installed using the bot editor’s Signing tab will be installed using the wrong file extension, causing integrations to fail. (47636041)

    Workaround: Sign into your bot user’s account and rename the affected profiles in the ~/Library/Mobile<wbr style="box-sizing: inherit;">Device/Provisioning Profiles directory.

Resolved Issues

  • Fixed a code signing issue that caused In-App purchase content bundles to fail to build. (50736776)

  • Resolved an issue where Xcode threw an error when creating new signing certificates for members of the iOS Developer University Program. (50640287)

  • Resolved an issue where Xcode incorrectly reported: “No iTunes Connect access for the team” when uploading to the App Store. (39292849)

Simulator

New Features

  • simctl can now override status bar values for iOS devices. For example, to set the time and battery, use:

    See xcrun simctl help status<wbr style="box-sizing: inherit;">_bar for the full range of options. (51697821)

  • Metal is available in iOS 13 and tvOS 13 simulators when running on macOS 10.15. Metal code is executed on the host Mac GPU, and is significantly faster than simulated OpenGL code.The APIs in SceneKit, CoreAnimation, and other system frameworks abstract many differences between GPUs, reducing the need for device-specific code. When running on earlier versions of macOS or in an environment where Metal is not available, simulators continue to use software rendered OpenGL. If your Mac has multiple GPUs, use the File menu in Simulator to select which GPU to use. If the GPU in use becomes unavailable, any simulators using it automatically shut down. (18430676)

  • Xcode no longer creates every available iOS simulator device by default. Instead a set of the most commonly used devices are created. To create other devices — or multiple instances of a device — open the Devices window, select Simulators, click the + button, enter a name, and select the relevant device type and OS version. (49428617)

  • CAMetal<wbr style="box-sizing: inherit;">Layer is available in iOS 13 and tvOS 13 simulators. (45101325)

  • iOS 13, watchOS 6, and tvOS 13 simulators now have a dyld shared cache. This improves simulator launch times and reduces the number of open file handles used by simulator processes. If you report an issue you believe is related to the shared cache, include a simctl diagnose and the output of launching your program with DYLD<wbr style="box-sizing: inherit;">_PRINT<wbr style="box-sizing: inherit;">_LIBRARIES=1. (13632739)

  • simctl now accepts short aliases for runtime names. This means you can create a new iPhone X simulator with a command like simctl create 'i<wbr style="box-sizing: inherit;">Phone X' i<wbr style="box-sizing: inherit;">OS13. (41089607)

  • For headless and continuous integration scenarios, you can configure CoreSimulator to skip compositing operations in the virtual frame buffer by setting defaults write com<wbr style="box-sizing: inherit;">.apple<wbr style="box-sizing: inherit;">.Core<wbr style="box-sizing: inherit;">Simulator Framebuffer<wbr style="box-sizing: inherit;">Server<wbr style="box-sizing: inherit;">Renderer<wbr style="box-sizing: inherit;">Policy to none. In this mode simulators can’t be viewed and simctl io is unable to take screenshots or record videos. (48264341)

  • Bundles without a CFBundle<wbr style="box-sizing: inherit;">Version are invalid and can’t be properly installed on devices or simulators. CoreSimulator now checks and rejects such bundles earlier in the process with a clearer error message. (49892531)

  • The Simulator dock icon now includes a menu to quickly boot a simulator. (43067512)

  • Simulator’s File menu now includes a GPU selection menu to control which GPU is used by Metal support in simulators and for compositing by Simulator’s virtual frame buffer. If the Use External GPU When Available item is checked, any simulators booted after an external GPU is connected use the external GPU. If the external GPU is disconnected, any simulators using it automatically shut down. Changes to these settings only take effect when a simulator is booted. Simulators already booted when this setting is changed continue using the previously selected GPU until they’re restarted. (46134036)

  • Game controller input is available in iOS simulators. (50082777)

Known Issues

  • Simulator doesn’t distribute the load if multiple GPUs in a system match the chosen GPU policy. Only the first matching GPU, as returned by MTLCopy<wbr style="box-sizing: inherit;">All<wbr style="box-sizing: inherit;">Devices(), is used. (50608554)

    Workaround: You may see higher performance by locating the simulator window on the display directly connected to the GPU the simulator is using, which avoids copying across GPUs.

    Note

    As with any app that leverages the GPU, the performance behavior for an externally connected display varies depending on workload.

  • Video recording of the iOS 13, tvOS 13, and watchOS 6 simulator through xcrun simctl io<UDID>record<wbr style="box-sizing: inherit;">Video returns an error instead of recording video. (50625716)

  • watchOS simulators don’t honor a breakpoint on a cold boot. (51148192)

    Workaround: Completely boot the simulator before launching the app you’re debugging.

  • The Rotate Device Automatically option in Simulator has no effect in iOS 13 simulators. (51147050)

Resolved Issues

  • Simulator delivers game controller events to simulated devices when Simulator isn’t the foreground app on macOS Catalina 10.15. (51759699)

  • Fixed an issue that caused simulators to stop presenting frame updates to the screen. (51993678)

  • Simulator correctly displays the checkmark for Touch ID > Enrolled when it’s enrolled. (50553667)

  • Automatic synchronization of pasteboards between a host and simulated devices behaves correctly. (46686100)

  • Safari’s Share to Simulator behaves correctly. (49331693, 49416352)

  • Resolved a leak of IOSurface instances in processes in Simulator on macOS 10.14.5 and earlier. (50880827)

  • iCloud sync is available in iOS simulators. (50924245)

  • iOS 13 simulators don’t have a simulated display connected when TVOut is configured as “disconnected”. (50829453)

  • iOS simulators color match Metal content to the display’s color space. (50625671)

  • Resolved an issue that caused Core Image shaders using Metal to fail to run on iOS 13 simulators, with the error “Metal DAG compiler disabled.” (51521248)

  • Game controllers work properly with iPad simulators. (51034639)

  • Resolved an issue that prevented simulator devices running versions of iOS prior to iOS 13 from rendering the display correctly. (50963987)

  • IOSurface is now functional in iOS 13, watchOS 6, and tvOS 13 simulators. (11051639)

  • Apps in a simulator that plays audio no longer automatically also open the microphone for input. (32406954)

  • The previously deprecated availability field in simctl list’s JSON output is removed. Use the is<wbr style="box-sizing: inherit;">Available Boolean field to determine availability. (45142676)

  • ATSC texture formats are supported by transparently decompressing them on the CPU prior to uploading them to the macOS GPU. (51347811)

Source Control

New Features

  • You can now cherry-pick changes from one branch to another. (18285039)

  • When cloning a new repository, you can now select the branch to check out from the list of available branches. (41122122)

  • Using the new source control file inspector, you can browse the full history of a file for the current branch. The log inspector is available for all file types, including Interface Builder documents. (45109443)

  • You can now stash changes and manage stashes from the source control navigator. Additionally, Xcode offers to automatically stash and restore changes for source control operations like pulling from a repository. (8797804)

  • Source control authors are now available on a per-editor basis. (45108927)

Known Issues

  • Viewing the changes for a revision of a file from the source control log inspector may fail if that file has since been renamed. (49673170)

  • Filtering packages in the Add Package assistant isn’t supported for Bitbucket Cloud or Bitbucket Server hosted accounts. (47290085)

  • Filtering packages in the Add Package assistant isn’t supported for GitLab or GitLab Self-Managed hosted accounts. (47290125)

  • When using xcodebuild, resolving packages may fail to verify SSH fingerprints unless that fingerprint is already in the ~/.ssh/known<wbr style="box-sizing: inherit;">_hosts file. (50686014)

    Workaround: SSH into the host and verify the fingerprint from the command line before using xcodebuild, or manually add the host fingerprint to the ~/.ssh/known<wbr style="box-sizing: inherit;">_hostsfile.

Resolved Issues

  • Improved the display of source control information when the Package<wbr style="box-sizing: inherit;">.swift file is selected in the project navigator. (50696823)

  • Pulling with rebase no longer fails if author information isn’t yet configured for Git in Preferences > Source Control. (48680076)

  • Resolved issues where hosted account providers like GitHub and BitBucket were unavailable in the add account sheet, and previously added accounts would be disabled. (47645098)

  • Addresses an issue where source control operations in Xcode presented a “Couldn’t communicate with helper application” dialog. (47227781)

  • Fixes a performance issue where Personal, organizational and Starred repositories took a long time to load. (48620126)

  • Addresses an issue where user avatars from GitHub didn’t always load after adding a GitHub account. (48698029)

  • Fixes a bug where some source editor menu options were unavailable in the Code Review Editor. (48774008)

Source Editor

New Features

  • Semantic highlighting, code completion, live issues, symbol search, and jump-to-definition are now supported for the Metal shading language. (45144204)

  • Introduces the ability to view inline code diffs for changes in the Source Editor by clicking on the Source Control Change Bar and choosing Show or Hide Change. (49073551)

  • Added new High Contrast (Dark) theme and High Contrast (Light) theme. Also added new settings for Marks, Type Declarations and Other Declarations. (50036007)

  • Added dedicated syntax coloring for declarations in Swift files, which can be customized in Preferences > Fonts & Colors under Type Declarations and Other Declarations.Declaration coloring for C-family languages isn’t supported. (10342935)

  • Xcode’s source editor now supports spell checking. (32062963)

  • Xcode 11’s source editor introduces a mini map of the file. The mini map includes legible text for Mark:, highlighted lines with errors and warnings, source control changes, breakpoints, and highlighted Find results. The mini map is enabled by default and can be turned off per editor. (35939517)

  • Added syntax highlighting for markup in documentation comments and playground markup. You can customize the prose font in Preferences > Fonts & Colors under Documentation Markup, and customize delimiter appearance in Preferences > Text Editing > Display. (42941263)

  • Toggle Comments supports multiple cursors. (44319433)

  • When dragging and dropping text, space is opened up between lines to make it easier to see where text will be dropped. When dragging full lines, Xcode only allows drops to occur between other lines. (44735912)

  • The editor allows hierarchical code folding. (47502128)

  • Code folding supports square brackets, and parentheses. (50460404)

  • // MARK: comments and #pragma mark directives now draw a separator line in the editor. The preference for showing mark separators is in Preferences > Text Editing > Display > Show Mark Separators. (7299224)

Resolved Issues

  • NSProgress<wbr style="box-sizing: inherit;">Indicator objects now preserve the current value configured in the inspector when built and run. (43257511)

  • C++ operator overloads are shown in the Jump Bar. (50841460)

  • Resolved an issue where Xcode erroneously opened an assistant editor when you ran Fix All Issues using a keyboard shortcut. (37995114)

  • Added dedicated syntax coloring for // MARK:comments and #pragma markdirectives, which you can customize in Preferences > Fonts & Colors > Mark. (22114159)

  • You can command-click on Swift operators to use Quick Help and Jump to Definition. (32695862)

  • Resolved an issue that could occur when editing an unclosed block in Objective-C. (48201424)

  • Resolved an issue where code completion sorted deprecated symbols ahead of their nondeprecated counterparts. (38422586)

  • Resolved an issue where code completion rows appeared empty when deleting text. (48621410)

  • Resolved an issue where C++ functions weren’t parsed correctly when using throw or noexcept clauses. (37682611)

  • Accessibility Zoom focus now follows the insertion point in the source editor while typing. (32775118)

  • VoiceOver doesn’t repeat the previous line when moving by line in the source editor. (34334763)

  • VoiceOver has rotors in the source editor for methods, errors, warnings, breakpoints, and marks which makes it easy to search for and move to the line of code corresponding to an error or other rotor item. (34493080)

  • VoiceOver text attributes now include the number of spaces, number of tabs, indent level and line number for a line of code in the source editor. (34607795)

  • VoiceOver no longer speaks extra characters around placeholder tokens when reading in the source editor, and says that they are placeholders. (44941610)

  • Resolved an issue where C++ raw strings didn’t highlight correctly. (10770485)

  • Resolved an issue of issues where C++ class declarations didn’t parse correctly when using qualified names, templates, or multiple inheritance. (11286215)

  • Resolved an issue where local classes nested inside functions or methods weren’t shown in the jump bar. (13337638)

  • Resolved an issue where C++11 trailing return types weren’t properly recognized. (13634062)

  • Resolved an issue where C++ typed enums were not parsed correctly. (13693443)

  • Improved the parsing of declarations that use availability macros and attributes. (14569168)

  • Resolved an issue where C++ numeric literals with single quotes were not recognized. (18121031)

  • Resolved an issue where struct member functions were not parsed correctly. (27946356)

  • Resolved an issue where enum declarations were not displayed in the Jump Bar correctly. (32518576)

  • Improved the recognition of classes and functions in JavaScript. (42537831)

  • Resolved an issue where functions returning enum types were not parsed correctly. (46164630)

  • Resolved an issue where unsigned and long integer literals were not syntax colored correctly. (47138177)

  • Updated JavaScript syntax highlighting to include ECMAScript 6 keywords. (47354463)

  • Fixed an issue where double clicking on a C++ destructor name would also select the tilde (~). (6368356)

Static Analyzer

New Features

  • The static analyzer checks for violations of the MIG calling convention in mach server routines. These violations can lead to use-after-free vulnerabilities. (35380337)

  • The static analyzer checks for violations of IOKit and libkern reference counting rules with respect to out-parameters. (46357478)

  • The static analyzer checks for violations of DriverKit reference counting rules. These violations can lead to leaks and use-after-free issues. (50349513)

Swift

New Features

  • The @frozen attribute for structures and enumerations is now available. (36597490)

  • The memberwise initializer for structures now provides default values for variables that hold default expressions. (SE-0242, 47130624)

  • An @autoclosure parameter can now be declared using a type alias. (SR-2688, 50560849)

  • Methods declared using the @objc attribute inside a class can now return Self. (SR-7601, 50560991)

  • Key path expressions can now include references to tuple elements. (50562288)

  • Single-parameter functions that accept values of type Any are no longer preferred over other functions. (50562333)

  • Conversions between tuple types are now fully implemented. Previously, the following would diagnose an error. (SR-2672, 12340004)

  • You can now declare and use type subscripts, just like type properties and type methods. Declare one by applying the static or, in classes, class modifier to the subscript declaration. (SE-0254, 16555559)

    Type subscripts can also be used with dynamic member lookup to create dynamic type properties.

  • Assigning Optional<wbr style="box-sizing: inherit;">.none to an enumeration that also has a none case, or comparing such an enumeration with Optional<wbr style="box-sizing: inherit;">.none now produces a warning. Such expressions create an ambiguity because the compiler chooses Optional<wbr style="box-sizing: inherit;">.none over the none case defined by your own enumeration. (SR-2176, 26126801)

    The compiler provides a warning along with a fix-it to replace .none with Optional<wbr style="box-sizing: inherit;">.none or Foo<wbr style="box-sizing: inherit;">.none to resolve the ambiguity.

  • Functions can now hide their concrete return type by declaring what protocols it conforms to, instead of specifying the exact return type:

    Code that calls the function can use the interface of the protocol, but doesn’t have visibility into the underlying type. (SE-0244, 40538331)

  • Enum cases can now be matched against an optional enum without requiring a ‘?’ at the end of the pattern. (SR-7799, 41494702)

  • The existing @dynamic<wbr style="box-sizing: inherit;">Member<wbr style="box-sizing: inherit;">Lookup attribute now supports typed key path implementations. (SE-0252, 49069813)

  • You can now use the Self expression to refer to the innermost nominal type inside structure, enumeration and class declarations. For example, the two method declarations inside this structure are equivalent:

    In classes, Self is the dynamic type of the self value, as before. Existing restrictions on Self in declaration types still apply; that is, Self can only appear as the return type of a method. However, Self can now be used inside the body of a method without limitation. (SE-0068, 17892696)

  • Array and Contiguous<wbr style="box-sizing: inherit;">Array now have the init(unsafe<wbr style="box-sizing: inherit;">Uninitialized<wbr style="box-sizing: inherit;">Capacity:<wbr style="box-sizing: inherit;">initializing<wbr style="box-sizing: inherit;">With:) initializer, which provides access to the array’s uninitialized storage. (21880692)

  • More thorough checking has been implemented for restrictions around escaping closures capturing in-out parameters or values of noescape type. While most code isn’t affected, there are edge cases where the Swift 5.0 compiler accepted code that violated these restrictions. (SR-8546, SR-9043, 43355341)

    An example of invalid code which was incorrectly accepted by the Swift 5.0 compiler is an @escaping closure that calls a local function that references an in-out parameter from an outer scope:

    The compiler now correctly diagnoses the above code by pointing out that the capture of x by local<wbr style="box-sizing: inherit;">Function() is invalid, since local<wbr style="box-sizing: inherit;">Function() is referenced from an @escaping closure.

    This also addresses certain cases where the compiler incorrectly diagnosed certain code as invalid, when in fact no violation of restrictions had taken place. For example:

Known Issues

  • If a type has the same name as its containing module, importing that module from a module interface might fail. (19481048, 48445154)

    Workaround: Rename the type so it no longer conflicts with the module name.

Resolved Issues

  • Duplicate tuple element labels are no longer allowed, because it leads to incorrect behavior. (SR-8974, 45218256)

    The following is now diagnosed as an error:

    You can still use duplicate labels when declaring functions and subscripts, as long as the internal labels are different. For example:

  • Declarations with opaque return types that require the Swift 5.1 runtime in iOS 13, macOS 10.15, watchOS 6, or tvOS 13 are enforced by the Swift compiler. (50731151)

  • APIs deprecated before macOS 10.9 show up properly as unavailable when compiling with Require Only App-Extension-Safe API build setting. (51417764)

  • The Swift REPL works properly when launched from Terminal. (51374106)

  • The compiler no longer crashes if a type uses an opaque return type to satisfy an associated type requirement of a protocol and that associated type is referred to by name inside another generic declaration. (50509030)

  • Static libraries are now always force-loaded in their entirety during linking, fixing runtime errors related to demangling failures. (47598583)

  • weak and unowned stored properties no longer inhibit the automatic synthesis of Equatable or Hashable conformance. (SR-9827, 50566123)

  • If symbols in a crash log aren’t properly demangled, run the swift-demangle command and pass in the content of the crash log. (34920390)

SwiftUI

Known Issues

  • With Xcode 11 beta 4, previews are only available on macOS Catalina 10.15 beta 4, and only Xcode 11 beta 4 supports previews on macOS Catalina 10.15 beta 4. (52059562)

  • Previews inspectors render with a serif font instead of the system font. (52473187)

  • The software keyboard doesn’t appear in previews. (35615536)

  • Xcode might crash when displaying an on-device preview when multiple devices are connected your Mac. (52545102)

    Workaround: Only connect a single device to your Mac when running an on-device preview.

  • Naming a type with the same name as a system type might cause previews to fail. (51531683)

    Workaround: Don’t use the same name for your type as a system type.

  • Code changes you make while running an on-device preview might display the Home screen briefly while the app relaunches. (48208765)

  • Xcode might crash when you’re inspecting a view hierarchy that contains SwiftUI views. (52857304)

  • Pinching to zoom is unavailable in live previews. (51183125)

    Workaround: Exit live mode or use the zoom controls in the canvas or editor menu.

  • Static previews for iOS, tvOS, and watchOS don’t support SceneKit, MapKit, and Metal views, and experience a delay when rendering updates. (50965310)

  • Drag and drop operations that result in insertions of containers around an existing view and a new sibling in the container don’t work if the existing view is at the top level of a conditional statement in a view builder. For example, you can’t drop an HStack or VStackaround the Text. (50300406):

    Workaround: Embed the existing view into a container — either in the canvas or the source editor — then drop the new view into that container.

  • Previews in packages always perform a full build of the active scheme. (51030302)

  • Dragging a Text modifier onto text in the canvas that already has a View modifier such as frame(width:<wbr style="box-sizing: inherit;">height:<wbr style="box-sizing: inherit;">alignment:) results in a compilation error. (50712235)

    Workaround: Reorder the modifiers so that modifiers specific to Text appear before any View modifiers.

  • HStack and VStack inspectors don’t support custom layout guides. (49710501)

    Workaround: Use the source editor for custom layout guides.

  • The attribute inspector doesn’t allow specifying flexible frames. (51310989)

  • Entering live preview mode in the canvas might take several seconds the first time. (46505269)

  • Opening the same file in a new window then closing that window causes previews in the first window to display an error. (47619828)

    Workaround: Choose Try Again in the first window when the error appears.

  • Previews may fail or update incorrectly when switching between files. (50841287)

    Workaround: Add a newline to the end of the active file, then click Resume in the banner that appears.

  • The attributes inspector stays visible after the canvas closes, gets stuck on the last selected item, and doesn’t function. (50958316)

    Workaround: Reopen the canvas or switch to a different file.

  • Previews don’t work for macOS apps with App Sandbox enabled. (51088926)

  • Previews don’t appear in the canvas for private and fileprivate structures that conform to Preview<wbr style="box-sizing: inherit;">Provider. (47011316)

    Workaround: Remove the private or fileprivate access control from your conforming type.

  • Previews might take several seconds to update when switching devices in the run destination selector the first time. (47562171)

  • Previews might temporarily show the incorrect device chrome when switching devices using the run destination from the Scheme pop-up menu. (49496647)

  • The canvas doesn’t support focus. (50275735)

  • Undo is unavailable in the canvas. (49651153)

    Workaround: Bring the source editor into focus and perform the undo there.

Resolved Issues

  • Fixed a crash that could occur when enabling or disabling a live preview. (52083572)

  • Resolved an issue where Apple Watch previews displayed black text on a black background. (51676439)

  • Previews continue working after changing filenames without needing to switch to a different file and switch back. (51708183)

  • Previews respect conditional compilation blocks surrounding imports. For example, you can conditionally import UIKit guarded on #if can<wbr style="box-sizing: inherit;">Import(UIKit). (51545182)

  • The availability attributes that you apply to types and methods are respected by previews. When the deployment target doesn’t include SwiftUI — that is, the deployment target is before iOS 13, macOS 10.15, watchOS 6, or tvOS 13 — you can now view previews for views and view controllers using UIView<wbr style="box-sizing: inherit;">Representable instances and UIView<wbr style="box-sizing: inherit;">Controller<wbr style="box-sizing: inherit;">Representable instances. To do so, add the appropriate availability attributes to your view representable types and Preview<wbr style="box-sizing: inherit;">Provider conformances, such as @available(i<wbr style="box-sizing: inherit;">OS 13<wbr style="box-sizing: inherit;">.0, *). (51493428)

  • Named colors are editable in the Attributes inspector. (51287606)

  • Using with<wbr style="box-sizing: inherit;">Animation(_:<wbr style="box-sizing: inherit;">_:) to change state in a root view displays properly in live previews. (51164838)

  • Animations stay in their context in live previews, and live previews match on-device previews. (50708417)

  • Resolved an issue that prevented watchOS previews from working if a device paired with Apple Watch was selected in the run destination chooser. (50861269)

  • Fixed a crash that could occur when selecting and then re-selecting a named color in the Color inspector. (51304163)

  • When running on Apple Watch Series 3, apps built using SwiftUI no longer behave as if they are running on Apple Watch Series 4. (50678109)

SwiftUI Tutorials

Known Issues

  • After following Section 7, Step 7 in the Building Lists and Navigation tutorial in Xcode, you might encounter an error in your project’s Scene<wbr style="box-sizing: inherit;">Delegate<wbr style="box-sizing: inherit;">.swift file. (51334559)

    Workaround: Update line 14 of Scene<wbr style="box-sizing: inherit;">Delegate<wbr style="box-sizing: inherit;">.swift to use Landmark<wbr style="box-sizing: inherit;">List instead of Landmark<wbr style="box-sizing: inherit;">Detail:

  • After following Section 5, Step 3 in the Handling User Input tutorial in Xcode, you might encounter an error in the preview provider. (51341785)

    Workaround: Undo the change to the Landmark<wbr style="box-sizing: inherit;">Detail initializer, so that you only add the environment<wbr style="box-sizing: inherit;">Object(_:) modifier:

Swift Packages

Known Issues

  • Previews aren’t supported for standalone packages. (51072409)

  • Swift packages don’t support adding resource files — such as images, storyboards, or audio — in a target. (SR-2866, 33389529)

  • Searching for package repositories in the Add Package Dependency sheet might not complete when there are no search results. (51223367)

    Workaround: Cancel the search, enter the repository URL in the text field, then select Next.

  • Code completion doesn’t work for Swift package targets if the name of the target declared in the Package<wbr style="box-sizing: inherit;">.swift manifest file differs in casing with the directory name for that target. (49648458)

    Workaround: Use path property to provide the exact casing of target’s name as on disk or update target name in the manifest to match the directory name on disk.

  • Swift packages don’t support adding resource files — for example, images, storyboards, or audio — in a target. (SR-2866)

  • Swift packages don’t support processing localized strings files. (48190792)

  • Moving a local package in a project will convert it into a folder reference. (50320585)

  • A package product that is linked into both app and its test target results in duplicated symbols. (50348625)

    Workaround: Link a package product only in the app or test target.

  • The scheme that’s autogenerated for a Swift package isn’t automatically updated when the package adds or removes targets. (50586754)

    Workaround: Delete the scheme from the swiftpm/xcode/xcshareddata/xcschemes directory inside the package directory, then reopen the package to automatically generate a new scheme.

  • Targets of a Swift package build with debug-conditional settings if the build configuration selected in the scheme is not named Debug or Release. (50696202)

  • Removing a local package reference from a workspace removes its package products from all Xcode targets in the workspace, even when other references to that local package remain in the workspace. (50706448)

    Workaround: Add package product references back to the relevant targets.

  • Previewing code in Swift packages which are not referenced by the active scheme and not being linked into an app target is not supported and shows an incorrect error message. (50909384)

  • Test targets of newly-created Swift packages fail to build for watchOS because XCTest is unavailable on watchOS. (51054894)

    Workaround: Surround any code in watchOS test targets which references the XCTest framework or its APIs with conditional compilation statements. For example:

Resolved Issues

  • Adding a new file in a C-family target of a Swift package doesn’t create the file with the .swift extension. (31395814)

  • Swift packages that use unsafe<wbr style="box-sizing: inherit;">Flags build settings can’t be used as a dependency. (50354068)

  • The XCTUnwrap API is available when building Swift package tests using the Swift Package Manager. (51115369)

  • Xcode no longer crashes if a local package overrides a remote package in a project and the local package has an unsatisfiable package dependency. (51183216)

Testing

New Features

  • Support for writing XCTest UI tests that interact with SwiftUI views. (35224680)

  • Test Plans are a new way to manage which tests run, and how those tests run. Schemes can reference multiple test plans, and define a default test plan for automation. A new Test Plan editor supports defining test configurations, which can inherit shared settings from the plan itself. Running tests in Xcode now runs tests across all test configurations. The Source Editor test diamonds are updated to support running a test in a single configuration, and the Test Navigator is updated to allow choosing the active test plan. Test reports are updated to support displaying results generated by a test plan. (16138582)

  • XCTest includes augmented performance testing capabilities with the new measure(metrics:<wbr style="box-sizing: inherit;">options:<wbr style="box-sizing: inherit;">block:) method and related methods. The metrics argument requires a list of objects conforming to the XCTMetric protocol. You can either implement your own custom metrics or use XCTClock<wbr style="box-sizing: inherit;">Metric, XCTOSSignpost<wbr style="box-sizing: inherit;">Metric, XCTCPUMetric, XCTMemory<wbr style="box-sizing: inherit;">Metric, or XCTStorage<wbr style="box-sizing: inherit;">Metric. (49430032)The following shows an example performance test that measures the CPU and Memory impact of sorting a list:

  • Added an assertion function, XCTUnwrap, for use in Swift tests. XCTUnwrap asserts that an Optional variable’s value is not nil, returning its value if the assertion succeeds. This removes the need to combine XCTAssert<wbr style="box-sizing: inherit;">Not<wbr style="box-sizing: inherit;">Nil(_:<wbr style="box-sizing: inherit;">_:<wbr style="box-sizing: inherit;">file:<wbr style="box-sizing: inherit;">line:) with either unwrapping the value or dealing with conditional chaining for the rest of the test. For example:

    XCTUnwrap is a throwing assertion, and is best used in a throwing test method as in the above example. (30667432)

  • xccov now supports being passed result bundles directly, in addition to raw report and archive files. For example, to view the coverage report within a result bundle, invoke xccovas follows: xccov view --report /path/to/result<wbr style="box-sizing: inherit;">_bundle<wbr style="box-sizing: inherit;">.xcresult. (50500789)

  • The format of result bundles changed in Xcode 11. A result bundle is an asset produced by Xcode 11 with the xcresult file extension that contains information about the build, tests, code coverage, and more. Any xcresult files produced with Xcode 10 or earlier cannot be read by Xcode 11. A result bundle can be produced by passing -result<wbr style="box-sizing: inherit;">Bundle<wbr style="box-sizing: inherit;">Path ./Example<wbr style="box-sizing: inherit;">.xcresult to an xcodebuild invocation and the Example<wbr style="box-sizing: inherit;">.xcresult can then be opened in Xcode. Xcode also creates result bundles in Derived Data. The current result bundle version number is 3, which can be specified by passing the xcodebuild flag -result<wbr style="box-sizing: inherit;">Bundle<wbr style="box-sizing: inherit;">Version 3. Version 3 is the default in Xcode 11, but it is still recommended for automation to explicitly pass the flag, so that any potential future versions that become the default do not cause issues to existing tools. Result bundles can be inspected using xcresulttool. A JSON representation of the root object of the result bundle can be exported using xcrun xcresulttool get --format json --path ./Example<wbr style="box-sizing: inherit;">.xcresult and any nested object, identified by its reference found in the JSON output, can be exported by adding the flag --id REF. xcresulttool also provides the description of its format using xcrun xcresulttool format<wbr style="box-sizing: inherit;">Description. (41633595)

  • If a test runs on multiple destinations and fails on some but not others, the test report displays a summary describing the destinations on which the test failed, e.g. “Failed on iPad destinations running iOS 12.0”. (49164968)

  • When running a test or test class via a source editor test diamond, option-clicking the diamond presents a popover that allows the test to be run under a specific configuration in the active test plan (if the test plan has multiple configurations). (46348663)

  • When viewing a test report for tests that ran on multiple destinations (such as an Xcode Server integration, or a result bundle generated by an xcodebuild invocation with multiple destination specifiers), it’s now possible to filter the displayed results by destination. Clicking on the devices button in the scope bar will present a list of the destinations on which the tests ran, including the ability to hide or show only the destinations of interest. In addition, it’s now possible to filter to only those tests that failed on one destination but succeeded on another, via the “Mixed” button in the scope bar. (48981032)

  • Result bundles produced by xcodebuild can now be shared, double-clicked, and opened in Xcode directly. (38620469)

  • Introduces support for writing XCTest-based tests for Mac Catalyst apps. (41530313)

  • Code Coverage is now enabled by default for newly created test plans. (48749597)

  • In UI testing on macOS, mouse moves, including calls to the hover API as well as calls to click, scroll, and other APIs will move the cursor progressively across the screen, just as a user would in real interactions, rather than instantly moving the cursor to the final location. This may cause problems for tests involving UI that is heavily dependent on mouseover behavior. (49430331)

  • The .xctestrun file format is modified for Test Plans to include information about how to perform each test configuration in the plan. When running xcodebuild build-for-testing for a scheme that uses test plans, the generated .xctestrun files use Format<wbr style="box-sizing: inherit;">Version 2 and have a revised property list structure. .xctestrun files generated for schemes which don’t use test plans continue to use Format<wbr style="box-sizing: inherit;">Version 1, and xcodebuild test-without-building accepts either version. (46346053)

  • The Code Coverage setting in the test plan editor doesn’t support selecting individual targets to gather code coverage for. If the test plan was created by converting a scheme to use test plans, and that scheme had individual code coverage targets selected at the time of conversion, those targets are preserved in the resulting test plan but aren’t editable within the plan. (50502861)

  • xcodebuild is enhanced with new options supporting Test Plans. Use the new -show<wbr style="box-sizing: inherit;">Test<wbr style="box-sizing: inherit;">Plans option to list all test plans associated with a scheme. Use the new -test<wbr style="box-sizing: inherit;">Plan <name> option to specify which test plans associated with a scheme to use for testing or building tests. If -test<wbr style="box-sizing: inherit;">Plan <name> is not specified, xcodebuild test will use the scheme’s default test plan. (46346197)

  • Xcode 11 introduces the option to automatically include screenshots from XCTest in Xcode Localization Catalogs. Enable Localization Screenshots in your test plan or in the scheme editor, then check “include screenshots” when exporting for localization. (28656175)

Known Issues

  • The test plan editor allows enabling certain combinations of sanitizers and memory diagnostics which are incompatible and should not be simultaneously enabled. For example, Address Sanitizer and Guard Malloc, or Address Sanitizer and Thread Sanitizer. (49739613)

    Workaround: Don’t configure a test plan with a combination of sanitizers and memory diagnostic settings which are incompatible. If an incompatible setting is inherited in a test configuration by the test plan’s Shared Settings, manually override the setting to disable it for the affected test configuration.

Resolved Issues

  • Fixed an issue that prevented UI test runners from making arbitrary network requests. (52856418)

  • Fixed an issue that prevented launching UI test targets with a name that contained a hyphen directly followed by a digit. (51857798)

  • Editing a test plan that references test targets in a different project than the project that contains the active scheme no longer causes those test targets to be labeled as missing. (50148373)

  • You can run tests in a workspace that contains Swift packages during package resolution. (48719922)

  • Running tests with code coverage enabled correctly produces a coverage report for iOS apps in the simulator and on a Mac. (51091751)

  • Fixed an issue with UI tests for iPad apps on Mac where attempting to interact with elements inside of a table view cell could fail with an error about hit testing. (50745246)

  • The Execute in Parallel checkbox in the test action of a scheme is now enabled for test targets of a Swift package. (47564543)

  • Resolved a crash that could occur while checking for device availability when starting a testing operation. (51245770)

  • Resolved an issue that prevented code coverage reports from being generated for Mac Catalyst apps or iOS apps in Simulator. (51241460)

  • The exists property on XCUIElement now produces test failures in situations where XCTest is unable to inspect the application’s UI — for example, due to the app’s main thread being unresponsive — instead of returning false in those situations. (37359653)

  • The unit test discovery mechanism is more efficient for large projects. The test navigator gets populated faster after reopening a project. (32567980)

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容