Xcode 15 beta 3 — не удалось создать экземпляр класса с именем _UIRecessedMaterialView

У меня есть приложение, которое загружает xib с сегментированным элементом управления. Если я соберу его с помощью Xcode 15 beta 3 и запущу на iPad с iPadOS 17 (или на симуляторе iOS 17), он вылетит с ошибкой:

Закрытие приложения из-за неперехваченного исключения «NSInvalidUnarchiveOperationException», причина: «Не удалось создать экземпляр класса с именем _UIRecessedMaterialView, поскольку класс с именем _UIRecessedMaterialView не найден; класс должен быть определен в исходном коде или связан с библиотекой (убедитесь, что класс является частью правильной цели)' Первый стек вызовов throw: ( 0 CoreFoundation 0x00007ff80048c88a __ExceptionPreprocess + 242 1 libobjc.A.dylib 0x00007ff800057894 objc_Exception_throw + 48 2 CoreFoundation 0x00007ff80048c768 -[NSException initWithCoder:] + 03 UIFoundation 0x00007ff804a1eb4d UINibDecoderDecodeObjectForValue + 3524 UIFoundation 0x00007ff804a1eebe UINibDecoderDecodeObjectForValue + 12335 UIFoundation 0x00007ff804a1e9e2 -[UINibDecoder decodeObjectForKey:] + 2576 UIKitCore 0x0000000108c04a9f -[UIView initWithCoder:] + 1327 7 UIKitCore 0x0000000107c32c81 -[UIControl initWithCoder:] + 65 8 UIKitCore 0x0000000107c5a7b3 -[UISegmentedControl initWithCoder:] + 659 UIFoundation 0x00007ff804a1ecb4 UINibDecoderDecodeObjectForValue + 711 10 UIFoundation 0x00007ff804a1e9e2 -[UINibDecoder decodeObjectForKey:] + 257 11 UIKitCore 0x000000010801c7cd -[UIRuntimeConnection initWithCoder:] + 125 12 UIKitCore 0x000000010801cbef -[UIRuntimeEventConnection initWithCoder:] + 5913 UIFoundation 0x00007ff804a1ecb4 UINibDecoderDecodeObjectForValue + 71114 UIFoundation 0x00007ff804a1eebe UINibDecoderDecodeObjectForValue + 123315 UIFoundation 0x00007ff804a1e9e2 -[UINibDecoder decodeObjectForKey:] + 25716 UIKitCore 0x0000000108015a79 -[NSCoder(UIIBDependencyInjectionInternal) _decodeObjectsWithSourceSegueTemplate:creator:sender:forKey:] + 447 17 UIKitCore 0x000000010801877e -[UINib instanceiateWithOwner:options:] + 1118 18 UIKitCore 0x000000010801a112 -[NSBundle(UINSBundleAdditions) loadNibNamed:owner:options:] + 13919 CustomSearchBarBug 0x000000 010671830e $s18CustomSearchBarBug11AppDelegateC11application_29didFinishLaunchingWithOptionsSbSo13UIApplicationC_SDySo0m6LaunchL3KeyaypGSgtF + 462 20 CustomSearchBarBug 0x0000000106718687 $s18CustomSearchBarBug11AppDelegateC11application_29didFinishLaunchingWithOptionsSbSo13UIApplicationC_SDySo0m6LaunchL3KeyaypGSgtFTo + 183 21 UIKitCore 0x000000010857a092 -[UIApplication _handleDelegateCallbacksWithOptions:isSuspended:restoreState:] + 297 22 UIKitCore 0x000000010857be6b -[UIApplication _callInitializationDelegatesWithActions:forCanvas:payload:fromOriginatingProcess:] + 425323 UIKitCore 0x000000010858196b -[UIApplication _runWithMainScene:transitionContext:completion:] + 124124 UIKitCore 0x00000001078e6780 -[_UISceneLifecycleMultiplexer CompleteApplicationLaunchWithFBSScene:transitionContext: ] + 181 25 UIKitCore 0x000000010857e1dc -[UIApplication _compellApplicationLaunchToCompleteUnconditionally] + 5926 UIKitCore 0x000000010857e591 -[UIApplication _run] + 936 27 UIKitCore 0x00000001 0858301a UIApplicationMain + 123 28 UIKitCore 0x000000010764e103 __swift_destroy_boxed_opaque_existential_1Tm + 1085129 CustomSearchBarBug 0x0000000106718b1b $sSo21UIApplicationDelegateP5UIKitE4mainyyFZ + 12330 CustomSearchBarBug 0x0000000106718a97 $s18CustomSearchBarBug11AppDelegateC5$mainyyFZ + 3931 CustomSearchBarBug 0x0000000106718b88 main + 2432 dyld 0x00000001068a23ee start_sim + 1033 ??? 0x000000010dfd041f 0x0 + 4529652767)libc++abi: завершение работы из-за неперехваченного исключения типа NSException

Самый простой xib для воспроизведения сбоя:

      <?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="3.0" toolsVersion="22138.1" targetRuntime="iOS.CocoaTouch.iPad" propertyAccessControl="none" useAutolayout="YES" colorMatched="YES">
    <device id="ipad7_9" orientation="portrait" layout="fullscreen" appearance="light"/>
    <dependencies>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22113"/>
        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
    </dependencies>
    <objects>
        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
        <view clipsSubviews="YES" contentMode="scaleToFill" id="63">
            <rect key="frame" x="0.0" y="0.0" width="744" height="1133"/>
            <autoresizingMask key="autoresizingMask" widthSizable="YES"/>
            <subviews>
                <segmentedControl opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="bar" selectedSegmentIndex="0" id="10">
                    <rect key="frame" x="218.5" y="5.5" width="331" height="33"/>
                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                    <segments>
                        <segment title="Item"/>
                        <segment title="Brand"/>
                    </segments>
                    <connections>
                        <action selector="segmentedControlChanged:" destination="-1" eventType="valueChanged" id="25"/>
                    </connections>
                </segmentedControl>
            </subviews>
            <nil key="simulatedStatusBarMetrics"/>
            <point key="canvasLocation" x="467.96875" y="146.484375"/>
        </view>
    </objects>
</document>

XIB загружается так:

let nibs = Bundle.main.loadNibNamed("SegmentedControl", owner: nil, options: nil)

На iOS 16.3.1 сбоев не происходит.

Есть ли какое-нибудь исправление?

3 ответа

В моем случае проблема была связана с неправильными инструментами командной строки, выбранными для xcodebuild. Он был переключен на стабильную версию Xcode 14.3, которую я установил на ту же машину.

Я переключил его на инструменты командной строки Xcode 15 Beta 3, и ошибка исчезла.

Убедитесь, что в настройках Xcode выбраны правильные инструменты:

Сбой устранен в Xcode 15 beta 6.

В моем случае после полного удаления установленного XCode15β3 и повторной установки XCdode15β4 проблема была решена.

Другие вопросы по тегам