프로그래밍/macOS
Showing All Errors OnlyCommand CompileXIB failed with a nonzero exit code (Xcode
도츠(Dotz)
2024. 9. 6. 18:38
안녕하세요.
오늘은 Xcode 빌드 오류 해결법에 대해서
공유하려고 합니다.

곧 macOS 세쿼이아 (macOS Sequoia)출시 예정이라
개발팀 내부에서 개발환경을 조금 업그레이드했는데요.
Xcode14 -> Xcode15
아직 Xcode15와 Xcode14를
번갈아가면서 개발을 하고 있는데
Xcode15에서 새로 만들어진 View에 대해서
Xcode14에서 빌드를 못하는 이슈가 생기더라고요.

Xib상으로 보면 특별한 코드도 아니고
그저 Label을 보여주는 코드였어요.

xib를 열려고 하면 그냥 Xcode가 죽어버려서
난감해하고 있었는데
Error CallStack을 확인해 보니 textInsertionPointColor가 문제가 되고 있었어요.
2024-09-06 14:17:56.723 ibtoold[2830:30572] [MT] DVTAssertions: Warning in /System/Volumes/Data/SWE/Apps/DT/BuildRoots/BuildRoot2/ActiveBuildRoot/Library/Caches/com.apple.xbs/Sources/IDEInterfaceBuilder/IDEInterfaceBuilder-21507/InterfaceBuilderKit/Document/Archiving/Conformance/IBSystemClassArchiving.m:398
Details: Unhandled system color name: textInsertionPointColor
Object: <NSColor>
Method: +ibSwizzledInstantiateWithDocumentUnarchiver:
Thread: <_NSMainThread: 0x600000d3c800>{number = 1, name = main}
Please file a bug at https://feedbackassistant.apple.com with this warning message and any useful information you can provide.
2024-09-06 14:17:56.762 ibtoold[2830:30572] [MT] DVTAssertions: ASSERTION FAILURE in /System/Volumes/Data/SWE/Apps/DT/BuildRoots/BuildRoot2/ActiveBuildRoot/Library/Caches/com.apple.xbs/Sources/IDEInterfaceBuilder/IDEInterfaceBuilder-21507/InterfaceBuilderKit/Document/Archiving/IBDocumentUnarchiver.m:259
Details: Failed to unarchive an instance of NSColor
Object: <IBDocumentUnarchiver: 0x6000037cb600>
Method: -unarchiveObjectFromElement:
Thread: <_NSMainThread: 0x600000d3c800>{number = 1, name = main}
Hints:
Backtrace:
0 -[DVTAssertionHandler handleFailureInMethod:object:fileName:lineNumber:assertionSignature:messageFormat:arguments:] (in DVTFoundation)
1 _DVTAssertionHandler (in DVTFoundation)
2 _DVTAssertionFailureHandler (in DVTFoundation)
3 -[IBDocumentUnarchiver unarchiveReferenceFromElement:referenceType:] (in IDEInterfaceBuilderKit)
4 -[IBDocumentUnarchiver recurseWithElement:kind:invokingBlock:] (in IDEInterfaceBuilderKit)
5 -[IBDocumentUnarchiver unarchiveObjectFromElement:] (in IDEInterfaceBuilderKit)
6 -[IBDocumentUnarchiver unarchiveObjectForKey:defaultValue:] (in IDEInterfaceBuilderKit)
7 -[NSTextView(IBDocumentArchivingGenerator) unarchiveWithDocumentUnarchiver:] (in IDEInterfaceBuilderCocoaIntegration)
8 __51-[IBDocumentUnarchiver unarchiveObjectFromElement:]_block_invoke (in IDEInterfaceBuilderKit)
9 -[IBDocumentUnarchiver recurseWithElement:kind:invokingBlock:] (in IDEInterfaceBuilderKit)
10 -[IBDocumentUnarchiver unarchiveObjectFromElement:] (in IDEInterfaceBuilderKit)
11 ...
Xib를 소스코드로 확인해 보면

String Color에 textInsertionPointColor가 있는데요.
<attributes>
<color key="NSColor" name="textColor" catalog="System" colorSpace="catalog"/>
<font key="NSFont" size="13" name="HelveticaNeue"/>
<paragraphStyle key="NSParagraphStyle" alignment="left" lineBreakMode="wordWrapping" baseWritingDirection="leftToRight" lineSpacing="1" defaultTabInterval="28" tighteningFactorForTruncation="0.0" allowsDefaultTighteningForTruncation="NO">
<tabStops/>
</paragraphStyle>
</attributes>
</fragment>
</attributedString>
<color key="insertionPointColor" name="textInsertionPointColor" catalog="System" colorSpace="catalog"/>
ㅇ
https://developer.apple.com/documentation/appkit/nscolor/4213248-textinsertionpointcolor

textInsertionPointColor가
macOS 14(Sonoma)부터 사용가능이다 보니
Xcode 낮은 버전에서 해당 값을 찾지 못해서 크래시가 발생하는 거였네요.

그래서 name="textInsertionPointColor"를
하위 버전에서 사용 가능한 값
(ex. name="textColor")으로 변경하여
해결할 수 있었어요.