Build, test, and submit your app using Xcode, Apple's integrated development environment.

Xcode Documentation

Posts under Xcode subtopic

Post

Replies

Boosts

Views

Activity

Xcode beta documentation broken?
Is anyone else having trouble with the Documentation in the latest Xcode beta? I can't get any UIKit documentation to appear. UIKit is completely missing from the table of contents too. I've tried deleting the documentation caches but it isn't helping.
5
0
80
Mar ’25
Xcode 15 - can't select (installed) iOS 16.4 runtime destination
Problem: iOS 16.4 runtime targets are not available for selection, however the 16.4 simulator shows as installed under "Manage run destinations" Config: Xcode 15.0, Sonoma 14.0, M1 Mac-Mini Background: I write and maintain apps for my business unit. A co-worker dropped a phone on my desk and said 'The app doesn't work anymore, can you fix it'. Well, it turns out the phone is running iOS 16.6. The OS had been upgraded. This sent me down the path of upgrading Xcode on a development Mac, which also forced a MacOs upgrade on me. The end result is I now have XCode 15 on Sonoma, but have an iOS 16.6 device that I'm trying to target. Since I don't have any iOS 17 devices I didn't install the 17.0 runtime. To install the "16.6 runtime" I went to: "Xcode - Settings - Platforms" and hit the + in the lower left and under "Previously released simulators" I selected iOS. I selected iOS 16.4 as it was the closest I could see to 16.6 so I'm assuming it still works with 16.6. It took a few attempts to download correctly, but it now shows up in my platforms as "iOS 16.4 Simulator 6.18 GB on disk". If I select "Product - Destination - Manage Run Destinations" I can see simulators for 10 different iOS devices (from iPad 10th gen to iPhone SE) all running iOS 16.4. Great! I must be ready to develop and test for 16.6. Right? Nope. In the dropdown beside my App name the only option that is shown to me is "iOS 17" and the "Get" button beside it. I was expecting to my iOS 16.4 simulators as available target destinations, but there's nothing other than "iOS 17 - Get". This is an old App that I'm maintaining so its deployment target is not new. Selecting a different iOS Deployment target doesn't have an effect. I tried going into Manage Run Destinations and selected my iPhone 14 simulator on iOS 16.4 as "show run destination always". - no change Older iOS version do not show as destinations. Anyone else encounter this? Did you figure it out? Help? Thx
5
0
9.5k
Jan ’25
Project Navigator Broken in Xcode 16? Drag and Drop to Reorder Files Doesn't Work. "New Groups" Creates New Folders.
I just created a new project in the newest version of Xcode as a sample project for a feedback. Bug 1 So simply what I do in every new project is create a "Supporting Files" group (not a folder because I don't want to move these files on the file system). I put the following files in this group: .entitlements file -the Info.plist (which apparently new projects don't create anymore because I don't see one). main.m Assets.xcassets In previous version of Xcode this was done with the "New Group without Folder" action (though back in the day I believe you'd get yellow folders in "New Group" and blue folder with 'New Folder" and they were separate actions.... which was actually better and much less insane IMO but that's not really important to this). In any case, "New Group without Folder" is nowhere to be found in the context menu. I finally was able to get "New Group" to appear as long as I wasn't right clicking underneath any directory. But.... New Group actually creates a New Folder, just like New Folder. So I put the .entitlements in the Supporting Files group (which is not a group, but a directory) and the app won't compile unless I fix the path in project settings because I moved the file which is most definitely not what I wanted. So we can no longer group files in the project navigator without moving them to new directories? Is this intentional behavior? It can't be, right? Bug 2 I noticed dragging and dropping to reorder files in the project navigator no longer seems to work? In previous versions of Xcode I could drag and drop to reorder files (in groups and in folders, this would work). This appears to no longer work. I just have to accept the way Xcode orders my project files?
5
0
2.5k
Jan ’25
Problems compiling xcframeworks using Carthage with the latest Xcode beta
I use Carthage to build a set of dependencies. I generate .xcframework files with code for both macOS and iOS. This works through Xcode 26 beta 4. With Xcode 26 beta 5, the resulting .xcframework files seem to have code only for iOS, not macOS. Each framework has a ios-arm64 directory and a ios-arm64_x86_64-simulator directory, but no macos-arm64_x86_64 directory. This is affecting 3 of my 7 cross-platform dependencies that I compile with Carthage. What those 3 seem to have in common is that each has one target and scheme for the shared library – instead of one for iOS and another for macOS. I may have to create a second scheme and target in each of these dependencies, or move to SPM. But I am wondering if anyone has another suggestion. Thank you. John
5
0
105
Aug ’25
Xcode 16 destroys Objective-C Developer Documentation
In Xcode 16, even if Objective-C is selected, the Navigator in the documentation viewer displays Swift information. I don't know when this bug was introduced, but it's there in the last Xcode 16 betas at least. I hope as many developers as possible submit this bug to Apple to get their attention. P.S. Yes, I know there's Dash. For many years, Dash was a much better option than Xcode's built-in viewer. However, in version 5, the Dash developer introduced some unfortunate UI changes that made Xcode a better option to view the documentation in certain cases. Unfortunately, the Dash developer doesn't seem to be interested in user feedback anymore. He's been ignoring suggestions and user requests for years by now.
5
0
716
Dec ’24
xattr -c not removing com.apple.FinderInfo attribute from Xcode files
Hi all, reposting this from here: https://unix.stackexchange.com/questions/789849/xattr-c-not-removing-com-apple-finderinfo-attribute I came to this problem because my Xcode project was failing to build due to the error "resource fork, Finder information, or similar detritus not allowed" (was trying the solutions on this post). Basically, running xattr -cr . in the terminal on my project directory removes all extended attributes except com.apple.FinderInfo, which stays on all .xcodeproj and .xcworkspace files. I've tried everything under the sun, from sudo to xattr -d to dot_clean to tar to rsync and nothing works. Is this just an immortal attribute that can never be removed? I'm truly at a loss here, this is for my senior thesis project.
5
0
555
Mar ’25
After updating to Xcode 16.3, getting the error - Symbol not found: ___cxa_current_primary_exception
It didn't happen with Xcode 16.2 that I used before, but after updating to 16.3, when I build the app, the following error is output to the console and the app doesn't run. dyld[2150]: Symbol not found: ___cxa_current_primary_exception Referenced from: <6B00A4F2-B208-3FDB-BA38-B7095AF0034A> /private/var/containers/Bundle/Application/B590DB18-9C66-4C9E-8330-104943419E60/Mubeat DEV.app/Mubeat DEV.debug.dylib Expected in: <7F51CB08-A0CA-386E-BB62-4B8BFB0CED9F> /usr/lib/libc++.1.dylib Symbol not found: ___cxa_current_primary_exception Referenced from: <6B00A4F2-B208-3FDB-BA38-B7095AF0034A> /private/var/containers/Bundle/Application/B590DB18-9C66-4C9E-8330-104943419E60/Mubeat DEV.app/Mubeat DEV.debug.dylib Expected in: <7F51CB08-A0CA-386E-BB62-4B8BFB0CED9F> /usr/lib/libc++.1.dylib dyld config: DYLD_LIBRARY_PATH=/usr/lib/system/introspection DYLD_INSERT_LIBRARIES=/usr/lib/libBacktraceRecording.dylib:/usr/lib/libMainThreadChecker.dylib:/usr/lib/libRPAC.dylib:/Developer/Library/PrivateFrameworks/DTDDISupport.framework/libViewDebuggerSupport.dylib After looking for another solution, I found a way to remove the -Objc option in Other Linker Flags, but this method only works on iOS 18.4 and doesn't work on other versions. Is there another solution?
5
4
2k
Apr ’25
Warning: Error creating LLDB target at path. the specified architecture 'arm64-*-*' is not compatible with 'x86_64-apple-ios13.2.0-simulator'
Every time my app runs in the simulator I see this error: Warning: Error creating LLDB target at path '/Users/aaronsmith/Library/Developer/Xcode/DerivedData/Babylist-ahvzjxxrpawwqhecszqeyvjstfca/Build/Products/Debug-iphonesimulator/Babylist.app'- using an empty LLDB target which can cause slow memory reads from remote devices: the specified architecture 'arm64--' is not compatible with 'x86_64-apple-ios13.2.0-simulator' in '/Users/aaronsmith/Library/Developer/Xcode/DerivedData/Babylist-ahvzjxxrpawwqhecszqeyvjstfca/Build/Products/Debug-iphonesimulator/Babylist.app/Babylist' What is this? I'm on an M1, no build issues. It makes me think the simulator is running under rosetta with x68_64. But I didn't choose to do that. Mac OS Ventura. Xcode 14 RC.
5
4
6.2k
Mar ’25
Xcode 16.2 ncurses no longer works
I have a very large terminal project that relies on the ncurses library. As of the update on Dec. 11, 2024, the ncurses (and forms) API's no longer work when the app is launched from Xcode. If I run the app by double-clicking on the executable from Finder, the API's work as expected - but of course, that does not allow for debugging - which is the purpose of running within Xcode. I have tested on a simple project that simply outputs "Hello World" and waits for the input of CR before ending. What should happen, is that "Hello Word" is output on the terminal, but instead no output occurs. I stress that everything worked prior to the update on Dec.11. The code for main is simply this: #include <iostream> #include "stdlib.h" #include "stdio.h" #ifdef __cplusplus #include <iostream> #endif #include <cassert> #include <ncurses.h> #include <form.h> using namespace std; int main(int argc, const char * argv[]) { // cout << "Hello, World!" << endl; // Basic test initscr(); printw("Hello World !!!"); refresh(); int ch = 0; while (ch != 10) { ch = getch(); } endwin(); return 0; } To link to libncurses.tbd, in Build Phases, add the libncurses.tbd from the list of Frameworks. To output on the terminal, select the Product menu item in Xcode, then Edit Schema. Under the Options tab, change the Console selection to Terminal. When the application runs, the terminal will launch, but no output will occur. I have Googled every topic imaginable for 2 days now but have not come up with a solution. Is there something that I need to update? It looks to me like the libraries have been updated on Dec. 11 as well, but is there something else I need to do? For a more detailed image of one of the many screens I have working prior to this issue:
5
0
509
Jan ’25
How to use a folder generated by an Xcode Aggregate Target as a resource in another target?
I have a multi target project where every target relies on a built "web bundle" which is basically a collection of html, optimized images, and optimized javascript. Right now that web bundle is built in a pre build step by running a script. The script takes awhile to run and outputs to a folder that is referenced into the project via a PBXFileReference which is then referenced in the Copy Bundle Resources step. 96516AC22BF928DD00576562 /* build */ = {isa = PBXFileReference; lastKnownFileType = folder; name = build; path = "../web-ui/build"; sourceTree = "<group>"; } .... 96516AC32BF928DD00576562 /* build in Resources */ = {isa = PBXBuildFile; fileRef = 96516AC22BF928DD00576562 /* build */; }; As a step, I wrote an aggregate target that can also run this script. I specified its input and output files and turned off sandboxing. It does exactly what I need it to. Critically it is ran based on dependency analysis. If I modify any file in web-ui it rebuilds, if I dont I can repeatedly build the aggregate target and it will not re-run the script. This is perfect. A97590172E419CBA00741928 /* Build Web Bundle */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 12; files = ( ); inputFileListPaths = ( ); inputPaths = ( "$(SRCROOT)/xcodescripts/build-web-bundle.bash", "$(SRCROOT)/web-ui/index.html", "$(SRCROOT)/web-ui/vite-env.d.ts", "$(SRCROOT)/web-ui/vite.config.ts", "$(SRCROOT)/web-ui/tsconfig.json", "$(SRCROOT)/web-ui/stats.html", "$(SRCROOT)/web-ui/postcss.config.js", "$(SRCROOT)/web-ui/package.json", "$(SRCROOT)/web-ui/justfile", "$(SRCROOT)/web-ui/src/", ); name = "Build Web Bundle"; outputFileListPaths = ( ); outputPaths = ( "$(SRCROOT)/web-ui/build/", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "exec \"${SCRIPT_INPUT_FILE_0}\"\n"; }; You may notice I reference a src file. This is made possible via a flag USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES which allows Xcode to check folder dependencies recursively. The problem is that my other targets do not automatically recognize that they need to run the "WebBundle" aggregate target in order to update a resource they copy in their "Copy bundle resources" phase. So I tried adding it as a Target Dependency. A9DE685B2E41C9A8005EF4E0 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = A97590132E419C1200741928 /* WebBundle */; targetProxy = A9DE685A2E41C9A8005EF4E0 /* PBXContainerItemProxy */; }; Unfortunately this breaks whatever magic was allowing the script to be run only when there are web bundle changes. Every build it runs the "Build Web Bundle" script. I think what I am missing is a way to specify in these other targets that a resource they are used to copying from the Xcode PBXFileReference is produced by the aggregate target. This way they can start to reason about the dependencies. Other possibilities are that I should be building the web bundle to a separate location. Or that these references are somehow broken in another way. To be clear the folder format is as thus project/ iOS/ client.xcodeproj web-ui/ build/ (web bundle build is output here and referenced relatively) src/ index.html (and other things)
5
0
110
Aug ’25
Application failed to be exported as an app
Hi! We use to have several workspaces for our SDKs, one of them containing a test application. Everything worked fine. We decided to "merge" all SDKs in one workspace. I create a new workspace, added all SDKs and application inside and made all the required changes. Everything's good, we can generate our XCFramework and run the test application on the simulator. But when I archive the application, it is now exported in an "Other" section of the organizer instead of the original app (bundles identifiers are the same, already checked). I compared with FileMerge the xcproject files from before and after the merge, there is no significant difference between the 2. I compared also the xcarchive folders, and it seems that the archive is now missing the ApplicationProperties key inside. If I add it manually, I can now generate an ipa or send it to testflight. I checked with ChatGPT (just in case), but everything it asked me to check was fine (bundle ids, bundle versions and build number, Bundle os type in info.plist, custom xcconfig (same issue without them)). I'm pretty stuck here :-/ Thanks for your help
5
0
582
Nov ’24
Mocking or simulating CBPeripheral, CBCentralManager, etc in tests
I am developing an app that uses CoreBluetooth to communicate with a proprietary piece of hardware. I would like to be able to write tests for it, but there does not seem to be any way to mock or simulate the presence of, for example a CBPeripheral object. This library (https://github.com/NordicSemiconductor/IOS-CoreBluetooth-Mock) almost does what I need, but it's not quite flexible enough. I think they have the right idea, but it doesn't seem to be actively maintained anymore. This seems like a pretty big hole in the iOS SDK. Is there really not an officially supported way of testing BLE functionality?
5
0
995
Jan ’25
Xcode 16.3 Compile fails
After updating to 16.3, my project now fails to compile with the diagnostic: "Command SwiftCompile failed with a nonzero exit code". This is a SwiftUI document project with two local packages, the second of which is a rather large one with 112 SwiftUI files. It is this second package that is failing. There are no issues when compiling with 16.2. Without diagnostics I'm having a bit of difficulty in determining the cause. My thought is to regress the commits unit 16.3 gives a success, or shows issues. Although I'm not catching a similar issue in the forums, I'm seeing other problems with 16.3. Has anyone else had such build failure isolated to 16.3? Any advice on other ways to approach this problem? Thanks in advance
5
0
244
Apr ’25
Different Build Schemes -> Error: -Onone Swift optimization level to use previews
I have a sample SwiftUI iOS app. As shown in the screenshot below, my project has three configurations: Debug, MyDebug, Release. If I select the Debug or MyDebug scheme, I get a preview. But if I select the Release scheme, I get an error that says the following. ”***.app” needs -Onone Swift optimization level to use previews (current setting is -O) , where *** is the app name. It probably has nothing to do with the Preview error, but the Info.plist has a dictionary such that the key name is devMode, and the value is $(DEVMODE). And I have a user-defined setting as shown below. My ContentView has the following. import SwiftUI struct ContentView: View { @State private var state: String = "" var body: some View { VStack { Text("Hello, world!: \(state)") } .onAppear { if let devMode = Bundle.main.object(forInfoDictionaryKey: "devMode") as? String { print("Development mode: \(devMode)") state = devMode } if let path = Bundle.main.path(forResource: "Info", ofType: "plist") { if let dict = NSDictionary(contentsOfFile: path) { print("**** \(dict)") } } #if DEBUG print("Debug") #elseif MYDEBUG print("MyDebug") #else print("Que?") #endif } } } #Preview { ContentView() } So my question is how I get the preview for all three build schemes? Muchos thankos.
5
0
334
Apr ’25
_dispatch_client_callout crash
I received the attached crash report. The problem is that the crash report does not contain the abort reason - it appears to be thrown in the GCD library with no additional information. Is it a possible deadlock? 2023-02-15_02-40-23.0077_+0100-94015bd052c4005658221a5e6279f28a75b9e92c.crash Any ideas?
5
0
2.3k
Mar ’25