Dive into the vast array of tools and services available to developers.

Posts under General subtopic

Post

Replies

Boosts

Views

Activity

iOS 16 IPSW listed as compatible with iPhone 7 Plus
Hi folks, This webpage: https://developer.apple.com/download/os/#ios-restore-images-ipad-new lists the iPhone 7 Plus as being among the devices that are compatible with iOS 16.7.16. Currently the maximum iOS for the 7 Plus is 15.8.8 according to Settings. The page also indicates that iOS 15.8.8 should be installable on the iPhone 6. Are these typos? The utility idevicerestore refuses to install 16.7.16 on an iPhone 7 Plus so I assume so, but it would help to get confirmation.
2
0
23
1h
Apple Makes Notification Center Testing Nearly Impossible on macOS
I know that using a mouse to control an iPhone simulator on macOS allows me to swipe down from the top right corner to open the Control Center, but why can't I swipe down from the top left corner to open the Notification Center? Am I doing something wrong, or does iOS disable mouse access to the Notification Center on macOS? Also, it seems that you can't use a mouse or gestures to open the Notification Center or Control Center in iPhone Mirroring at all. I saw that Accessibility has a feature to open the Notification Center or Control Center with the keyboard, but it doesn't work in my tests on macOS. I have an application feature that needs to check the effect of the media playback cards in the Notification Center, but I can't check it at all. Every time I compile to a real device and test manually. Is there any way to reliably trigger the Notification Center and Control Center on macOS? Otherwise, testing on a real device every time is too cumbersome, and I can't automate the testing at all!
0
0
46
2d
Feature Request: Keyboard Shortcuts for Notification Center and Control Center in iOS Simulator and iPhone Mirroring
Hello, I would like to suggest adding dedicated keyboard shortcuts or menu commands for opening Notification Center and Control Center in both iOS Simulator and iPhone Mirroring. At the moment, these interfaces generally need to be opened by dragging downward from a specific area at the top of the simulated or mirrored iPhone screen. While this works for normal manual interaction, it is less reliable when using a mouse, especially when the window is resized or when the pointer needs to begin very close to the screen edge. This also creates difficulties for automated UI testing and computer-use agents, such as Codex-based testing workflows. These systems interact with the screen through mouse and keyboard input, so accurately reproducing an edge swipe can be unreliable. A small difference in the starting position may open Spotlight, scroll the current application, move the window, or fail to trigger the system interface entirely. It would be helpful if Apple could provide commands such as: Open Notification Center Open Control Center Dismiss Notification Center or Control Center These commands could be exposed through: Keyboard shortcuts The Simulator “Device” or “Features” menu The iPhone Mirroring toolbar or menu bar Accessibility or UI automation interfaces For example, Simulator already provides menu commands and shortcuts for actions such as pressing the Home button, locking the device, rotating the screen, and triggering other hardware-related interactions. Notification Center and Control Center could be handled in a similar way. This would improve: Manual testing with a mouse and keyboard Automated testing of applications that interact with notifications, media controls, Bluetooth, Focus modes, screen recording, and other system features Accessibility for users who have difficulty performing precise drag gestures Reliability for computer-use and vision-based testing agents Ideally, the commands should behave like genuine system gestures rather than directly changing internal state, so developers can test the complete user-visible interaction. Thank you for considering this feature.
1
0
78
4d
dyld crash before main() on macOS Tahoe 26 due to shared cache mapping failure
I am developing a large iOS application with an extensive UI test suite (hundreds of UI test scenarios). After upgrading our CI runners to macOS Tahoe 26, we started observing an intermittent issue where an iOS Simulator may operate normally for many successful application launches before unexpectedly entering a persistent degraded state. Once this occurs, every subsequent application launch crashes inside dyld before reaching our application’s main(). The degraded state persists until the simulator device is reset This causes UI tests to hang and eventually timeout. Business impact CI/CD jobs frequently timeout (90+ minutes per failed run) Significant loss of CI capacity Difficult to maintain reliable quality gates At our scale, this has become a serious issue affecting release confidence and overall engineering productivity. Technical details Crash report MyProject-2026-07-13-125307.ips — a crash report from a CI Demo project dyld_crash_demo — a minimal reproducible project demonstrating the relevant dyld execution path. The project intentionally returns errors from system functions along the shared cache initialization path to demonstrate that dyld continues execution until DyldSharedCache::getUUID(), where it subsequently crashes. Simply open the project and run it in iOS Simulator 26.2. Environment Component Version macOS Tahoe 26.x Xcode 26.2, 26.5 iOS Simulator 26.2, 26.5, 26.6 Architecture Apple Silicon dyld 1378 dyld_sim 1335 What we have ruled out multiple Xcode versions multiple macOS 26.x releases multiple iOS Simulator runtimes multiple simulator devices UI tests with parallel execution disabled deleting the simulator dyld shared cache recreating simulator devices application-specific issues (the crash happens before main()) The issue is still reproducible. Investigation The earliest observable failure sequence is consistently: shared_region_check_np() → "Cannot allocate memory" (ENOMEM) Shared cache mmap(0x180000000, ...) → EACCES The shared cache region remains unmapped DyldSharedCache::getUUID() reads 0x180000058 EXC_BAD_ACCESS (Translation fault) The crash occurs before any application code executes. The first faulting instruction belongs to DyldSharedCache::getUUID(), while the shared-cache region is still unmapped. Published dyld source analysis Relevant execution path: loadDyldCache() ↓ mapSplitCachePrivate() ↓ preflightCacheFile() Based on the published sources of dyld-1378, this appears to be the execution path leading to the observed failure. After the loadDyldCache() function failed to load the cache, dyld continued execution anyway and moved on to calling the DyldSharedCache::getUUID() function, where it subsequently failed. Additional observations Once the simulator enters the degraded state: simctl spawn succeeds. simctl launch crashes inside dyld before reaching main(). During our experiments, both processes were created by the same launchd_sim instance Before dyld::_dyld_start, both processes expose the same virtual address layout, including an unmapped shared-cache region (0x180000000–0x300000000). Current workaround As a temporary mitigation, we launch the application with DYLD_SHARED_REGION=avoid In our environment, this completely avoids the launch failures. However, this mode appears to be undocumented and intended primarily for debugging. We are concerned that it may change or stop working in future macOS or Xcode releases, so we are reluctant to depend on it in our production CI infrastructure. Questions 1. dyld Is it expected for dyld to continue dereferencing the shared-cache header after both the shared-region initialization and the shared-cache mapping have already failed? Execution appears to continue into: loadInfo.loadAddress->getUUID(cacheUuid) which results in an access to an unmapped address. The attached demo project reproduces this behavior by simulating failures from the shared-cache initialization path. Is there an expected fallback behavior for this situation or is continuing into DyldSharedCache::getUUID() the intended behavior ? 2. Simulator state Why does a simulator that initially launches applications successfully eventually enter a state where every subsequent launch fails while the shared cache can no longer be mapper? The earliest related system log we have found is: vm_shared_region_start_address() returned 0x1 Is this a known CoreSimulator or macOS Tahoe issue? If so, is there a supported workaround or recommended long-term solution besides DYLD_SHARED_REGION=avoid? Any guidance would be greatly appreciated.
1
28
482
6d
[FLUTTER] My app suddenly stopped working
Good morning. I have been developing an app for my company using flutter for a couple of months. A few months ago I deployed it through TestFlight, as it's supposed to be used by our staff exclusively. It has been working flawlessly since may, but today it has stopped working suddenly without me doing any kind of update or change to the code. The issue is that it's unable to send any kind of http request to our server, which it could do until literally yesterday. The error messages are both Connection Timed Out and Bad File Descriptor. As I have not updated the app in several days and it has suddenly stopped working without me changing anything, I suppose it could be a problem with a change of permissions or conditions that I have not agreed to. What could have happened? I use flutter 3.44.1 on windows and deploy using codemagic. Thank you for your cooperation.
2
0
129
6d
Release notes for July 6 2026 OS are missing in feedback assistant app
Or is it just me does anybody else see this issue or are you seeing it properly? I had to go to developerthe apple.com/operating systems sorry are you using voice control but I had to go to the actual website to get the notes for today July 6 2026 around 240 or so I even tried logging out of my iPhone assistant app logging back in it's showing the old ones from about two or three weeks ago. It's not a big deal I'm just trying to figure out if anybody is seeing this?
1
0
147
2w
An Apple Library Primer
Apple’s library technology has a long and glorious history, dating all the way back to the origins of Unix. This does, however, mean that it can be a bit confusing to newcomers. This is my attempt to clarify some terminology. If you have any questions or comments about this, start a new thread and tag it with Linker so that I see it. Share and Enjoy — Quinn “The Eskimo!” @ Developer Technical Support @ Apple let myEmail = "eskimo" + "1" + "@" + "apple.com" An Apple Library Primer Apple’s tools support two related concepts: Platform — This is the platform itself; macOS, iOS, iOS Simulator, and Mac Catalyst are all platforms. Architecture — This is a specific CPU architecture used by a platform. arm64 and x86_64 are both architectures. A given architecture might be used by multiple platforms. The most obvious example of this arm64, which is used by all of the platforms listed above. Code built for one platform will not work on another platform, even if both platforms use the same architecture. Code is usually packaged in either a Mach-O file or a static library. Mach-O is used for executables (MH_EXECUTE), dynamic libraries (MH_DYLIB), bundles (MH_BUNDLE), and object files (MH_OBJECT). These can have a variety of different extensions; the only constant is that .o is always used for a Mach-O containing an object file. Use otool and nm to examine a Mach-O file. Use vtool to quickly determine the platform for which it was built. Use size to get a summary of its size. Use dyld_info to get more details about a dynamic library. IMPORTANT All the tools mentioned here are documented in man pages. For information on how to access that documentation, see Reading UNIX Manual Pages. There’s also a Mach-O man page, with basic information about the file format. Many of these tools have old and new variants, using the -classic suffix or llvm- prefix, respectively. For example, there’s nm-classic and llvm-nm. If you run the original name for the tool, you’ll get either the old or new variant depending on the version of the currently selected tools. To explicitly request the old or new variants, use xcrun. The term Mach-O image refers to a Mach-O that can be loaded and executed without further processing. That includes executables, dynamic libraries, and bundles, but not object files. A dynamic library has the extension .dylib. You may also see this called a shared library. A framework is a bundle structure with the .framework extension that has both compile-time and run-time roles: At compile time, the framework combines the library’s headers and its stub library (stub libraries are explained below). At run time, the framework combines the library’s code, as a Mach-O dynamic library, and its associated resources. The exact structure of a framework varies by platform. For the details, see Placing Content in a Bundle. macOS supports both frameworks and standalone dynamic libraries. Other Apple platforms support frameworks but not standalone dynamic libraries. Historically these two roles were combined, that is, the framework included the headers, the dynamic library, and its resources. These days Apple ships different frameworks for each role. That is, the macOS SDK includes the compile-time framework and macOS itself includes the run-time one. Most third-party frameworks continue to combine these roles. A static library is an archive of one or more object files. It has the extension .a. Use ar, libtool, and ranlib to inspect and manipulate these archives. The static linker, or just the linker, runs at build time. It combines various inputs into a single output. Typically these inputs are object files, static libraries, dynamic libraries, and various configuration items. The output is most commonly a Mach-O image, although it’s also possible to output an object file. The linker may also output metadata, such as a link map (see Using a Link Map to Track Down a Symbol’s Origin). The linker has seen three major implementations: ld — This dates from the dawn of Mac OS X. ld64 — This was a rewrite started in the 2005 timeframe. Eventually it replaced ld completely. If you type ld, you get ld64. ld_prime — This was introduced with Xcode 15. Again, this isn’t a separate tool. Rather, ld supported the -ld_classic and -ld_new options to select a specific implementation. Note During the Xcode 15 beta cycle these options were named -ld64 and -ld_prime. I continue to use those original names because the definition of new changes over time (some of us still think of ld64 as the new linker ;–). Note Xcode 27 beta removed the ld64 implementation. The ld tool now contains just the ld_prime implementation. The dynamic linker loads Mach-O images at runtime. Its path is /usr/lib/dyld, so it’s often referred to as dyld, dyld, or DYLD. Personally I pronounced that dee-lid, but some folks say di-lid and others say dee-why-el-dee. IMPORTANT Third-party executables must use the standard dynamic linker. Other Unix-y platforms support the notion of a statically linked executable, one that makes system calls directly. This is not supported on Apple platforms. Apple platforms provide binary compatibility via system dynamic libraries and frameworks, not at the system call level. Note Apple platforms have vestigial support for custom dynamic linkers (your executable tells the system which dynamic linker to use via the LC_LOAD_DYLINKER load command). This facility originated on macOS’s ancestor platform and has never been a supported option on any Apple platform. The dynamic linker has seen 4 major revisions. See WWDC 2017 Session 413 (referenced below) for a discussion of versions 1 through 3. Version 4 is basically a merging of versions 2 and 3. Version 3 introduced the concept of a launch closure, which is an important optimisation. The dyld man page is chock-full of useful info, including a discussion of how it finds images at runtime. Every dynamic library has an install name, which is how the dynamic linker identifies the library. Historically that was the path where you installed the library. That’s still true for most system libraries, but nowadays a third-party library should use an rpath-relative install name. For more about this, see Dynamic Library Identification. Mach-O images are position independent, that is, they can be loaded at any location within the process’s address space. Historically, Mach-O supported the concept of position-dependent images, ones that could only be loaded at a specific address. While it may still be possible to create such an image, it’s no longer a good life choice. Mach-O images have a default load address, also known as the base address. For modern position-independent images this is 0 for library images and 4 GiB for executables (leaving the bottom 32 bits of the process’s address space unmapped). When the dynamic linker loads an image, it chooses an address for the image and then rebases the image to that address. If you take that address and subtract the image’s load address, you get a value known as the slide. Xcode 15 introduced the concept of a mergeable library. This a dynamic library with extra metadata that allows the linker to embed it into the output Mach-O image, much like a static library. Mergeable libraries have many benefits. For all the backstory, see WWDC 2023 Session 10268 Meet mergeable libraries. For instructions on how to set this up, see Configuring your project to use mergeable libraries. If you put a mergeable library into a framework structure you get a mergeable framework. Xcode 15 also introduced the concept of a static framework. This is a framework structure where the framework’s dynamic library is replaced by a static library. Note It’s not clear to me whether this offers any benefit over creating a mergeable framework. Earlier versions of Xcode did not have proper static framework support. That didn’t stop folks trying to use them, which caused all sorts of weird build problems. A universal binary is a file that contains multiple architectures for the same platform. Universal binaries always use the universal binary format. Use the file command to learn what architectures are within a universal binary. Use the lipo command to manipulate universal binaries. A universal binary’s architectures are either all in Mach-O format or all in the static library archive format. The latter is called a universal static library. A universal binary has the same extension as its non-universal equivalent. That means a .a file might be a static library or a universal static library. Most tools work on a single architecture within a universal binary. They default to the architecture of the current machine. To override this, pass the architecture in using a command-line option, typically -arch or --arch. An XCFramework is a single document package that includes libraries for any combination of platforms and architectures. It has the extension .xcframework. An XCFramework holds either a framework, a dynamic library, or a static library. All the elements must be the same type. Use xcodebuild to create an XCFramework. For specific instructions, see Xcode Help > Distribute binary frameworks > Create an XCFramework. Historically there was no need to code sign libraries in SDKs. If you shipped an SDK to another developer, they were responsible for re-signing all the code as part of their distribution process. Xcode 15 changes this. You should sign your SDK so that a developer using it can verify this dependency. For more details, see WWDC 2023 Session 10061 Verify app dependencies with digital signatures and Verifying the origin of your XCFrameworks. A stub library is a compact description of the contents of a dynamic library. It has the extension .tbd, which stands for text-based description (TBD). Apple’s SDKs include stub libraries to minimise their size; for the backstory, read this post. Use the tapi tool to create and manipulate stub libraries. In this context TAPI stands for a text-based API, an alternative name for TBD. Oh, and on the subject of tapi, I’d be remiss if I didn’t mention tapi-analyze! Stub libraries currently use YAML format, a fact that’s relevant when you try to interpret linker errors. If you’re curious about the format, read the tapi-tbdv4 man page. There’s also a JSON variant documented in the tapi-tbdv5 man page. Note Back in the day stub libraries used to be Mach-O files with all the code removed (MH_DYLIB_STUB). This format has long been deprecated in favour of TBD. Historically, the system maintained a dynamic linker shared cache, built at runtime from its working set of dynamic libraries. In macOS 11 and later this cache is included in the OS itself. Libraries in the cache are no longer present in their original locations on disk: % ls -lh /usr/lib/libSystem.B.dylib ls: /usr/lib/libSystem.B.dylib: No such file or directory Apple APIs, most notably dlopen, understand this and do the right thing if you supply the path of a library that moved into the cache. That’s true for some, but not all, command-line tools, for example: % dyld_info -exports /usr/lib/libSystem.B.dylib /usr/lib/libSystem.B.dylib [arm64e]: -exports: offset symbol … 0x5B827FE8 _mach_init_routine % nm /usr/lib/libSystem.B.dylib …/nm: error: /usr/lib/libSystem.B.dylib: No such file or directory When the linker creates a Mach-O image, it adds a bunch of helpful information to that image, including: The target platform The deployment target, that is, the minimum supported version of that platform Information about the tools used to build the image, most notably, the SDK version A build UUID For more information about the build UUID, see TN3178 Checking for and resolving build UUID problems. To dump the other information, run vtool. In some cases the OS uses the SDK version of the main executable to determine whether to enable new behaviour or retain old behaviour for compatibility purposes. You might see this referred to as compiled against SDK X. I typically refer to this as a linked-on-or-later check. Apple tools support the concept of autolinking. When your code uses a symbol from a module, the compiler inserts a reference (using the LC_LINKER_OPTION load command) to that module into the resulting object file (.o). When you link with that object file, the linker adds the referenced module to the list of modules that it searches when resolving symbols. Autolinking is obviously helpful but it can also cause problems, especially with cross-platform code. For information on how to enable and disable it, see the Build settings reference. Mach-O uses a two-level namespace. When a Mach-O image imports a symbol, it references the symbol name and the library where it expects to find that symbol. This improves both performance and reliability but it precludes certain techniques that might work on other platforms. For example, you can’t define a function called printf and expect it to ‘see’ calls from other dynamic libraries because those libraries import the version of printf from libSystem. To help folks who rely on techniques like this, macOS supports a flat namespace compatibility mode. This has numerous sharp edges — for an example, see the posts on this thread — and it’s best to avoid it where you can. If you’re enabling the flat namespace as part of a developer tool, search the ’net for dyld interpose to learn about an alternative technique. WARNING Dynamic linker interposing is not documented as API. While it’s a useful technique for developer tools, do not use it in products you ship to end users. Apple platforms use DWARF. When you compile a file, the compiler puts the debug info into the resulting object file. When you link a set of object files into a executable, dynamic library, or bundle for distribution, the linker does not include this debug info. Rather, debug info is stored in a separate debug symbols document package. This has the extension .dSYM and is created using dsymutil. Use symbols to learn about the symbols in a file. Use dwarfdump to get detailed information about DWARF debug info. Use atos to map an address to its corresponding symbol name. Different languages use different name mangling schemes: C, and all later languages, add a leading underscore (_) to distinguish their symbols from assembly language symbols. C++ uses a complex name mangling scheme. Use the c++filt tool to undo this mangling. Likewise, for Swift. Use swift demangle to undo this mangling. For a bunch more info about symbols in Mach-O, see Understanding Mach-O Symbols. This includes a discussion of weak references and weak definition. If your code is referencing a symbol unexpectedly, see Determining Why a Symbol is Referenced. To remove symbols from a Mach-O file, run strip. To hide symbols, run nmedit. It’s common for linkers to divide an object file into sections. You might find data in the data section and code in the text section (text is an old Unix term for code). Mach-O uses segments and sections. For example, there is a text segment (__TEXT) and within that various sections for code (__TEXT > __text), constant C strings (__TEXT > __cstring), and so on. Over the years there have been some really good talks about linking and libraries at WWDC, including: WWDC 2023 Session 10268 Meet mergeable libraries WWDC 2022 Session 110362 Link fast: Improve build and launch times WWDC 2022 Session 110370 Debug Swift debugging with LLDB WWDC 2021 Session 10211 Symbolication: Beyond the basics WWDC 2019 Session 416 Binary Frameworks in Swift — Despite the name, this covers XCFrameworks in depth. WWDC 2018 Session 415 Behind the Scenes of the Xcode Build Process WWDC 2017 Session 413 App Startup Time: Past, Present, and Future WWDC 2016 Session 406 Optimizing App Startup Time Note The older talks are no longer available from Apple, but you may be able to find transcripts out there on the ’net. Historically Apple published a document, Mac OS X ABI Mach-O File Format Reference, or some variant thereof, that acted as the definitive reference to the Mach-O file format. This document is no longer available from Apple. If you’re doing serious work with Mach-O, I recommend that you find an old copy. It’s definitely out of date, but there’s no better place to get a high-level introduction to the concepts. The Mach-O Wikipedia page has a link to an archived version of the document. For the most up-to-date information about Mach-O, see the declarations and doc comments in <mach-o/loader.h>. Revision History 2026-07-06 Added the term launch closure. 2026-07-02 Added a note about fate of ld64. 2025-08-04 Added a link to Determining Why a Symbol is Referenced. 2025-06-29 Added information about autolinking. 2025-05-21 Added a note about the legacy Mach-O stub library format (MH_DYLIB_STUB). 2025-04-30 Added a specific reference to the man pages for the TBD format. 2025-03-01 Added a link to Understanding Mach-O Symbols. Added a link to TN3178 Checking for and resolving build UUID problems. Added a summary of the information available via vtool. Discussed linked-on-or-later checks. Explained how Mach-O uses segments and sections. Explained the old (-classic) and new (llvm-) tool variants. Referenced the Mach-O man page. Added basic info about the strip and nmedit tools. 2025-02-17 Expanded the discussion of dynamic library identification. 2024-10-07 Added some basic information about the dynamic linker shared cache. 2024-07-26 Clarified the description of the expected load address for Mach-O images. 2024-07-23 Added a discussion of position-independent images and the image slide. 2024-05-08 Added links to the demangling tools. 2024-04-30 Clarified the requirement to use the standard dynamic linker. 2024-03-02 Updated the discussion of static frameworks to account for Xcode 15 changes. Removed the link to WWDC 2018 Session 415 because it no longer works )-: 2024-03-01 Added the WWDC 2023 session to the list of sessions to make it easier to find. Added a reference to Using a Link Map to Track Down a Symbol’s Origin. Made other minor editorial changes. 2023-09-20 Added a link to Dynamic Library Identification. Updated the names for the static linker implementations (-ld_prime is no more!). Removed the beta epithet from Xcode 15. 2023-06-13 Defined the term Mach-O image. Added sections for both the static and dynamic linkers. Described the two big new features in Xcode 15: mergeable libraries and dependency verification. 2023-06-01 Add a reference to tapi-analyze. 2023-05-29 Added a discussion of the two-level namespace. 2023-04-27 Added a mention of the size tool. 2023-01-23 Explained the compile-time and run-time roles of a framework. Made other minor editorial changes. 2022-11-17 Added an explanation of TAPI. 2022-10-12 Added links to Mach-O documentation. 2022-09-29 Added info about .dSYM files. Added a few more links to WWDC sessions. 2022-09-21 First posted.
0
0
17k
2w
DMG background image not visible on old macOS
I distribute my AppleScript applet in a read only DMG file. I want to add a simple background image which encourages users to copy the applet to their Applications folder. I use the Finder function "Show View Options" which has the option to add a picture. That seems to work in macOS Tahoe. However, the background image is not visible on earlier versions of macOS. I've also found that a background image set on a Mac running Monterey is not visible on a Mac running Tahoe. Is there a way to add a background image which works across multiple macOS versions ?
1
0
215
2w
Testing Revoke App Consent
Hi, I have two questions: Is there any way to test the revoke consent flow on a local build of our app? When I try using Sandbox to "Revoke App Consent" with the application bundle ID of a locally built and deployed app, it fails with "Cannot Trigger Notification. The bundle ID you provided is invalid or you do not have access to the app." https://developer.apple.com/support/age-assurance/#responsibility states that "When a parent or guardian revokes consent for their child to access an app, Apple will prevent the app from launching." However, when using the Sandbox to revoke app consent, the app is still launchable. Does anyone know if the app being launchable is exclusive to Sandbox, and how this works in prouduction?
0
0
220
3w
App Store Connect/Xcode Cloud still shows old app icon
Hello, I am having problems with my app icon in App Store Connect and Xcode Cloud. I replaced the app icon with a new one (including the 1024×1024 App Store icon), committed and pushed all changes to GitHub, and Xcode Cloud successfully created a new build. However, App Store Connect and TestFlight still seem to show the old icon in some places. In Xcode, the new icon is visible, and the asset catalog appears to be correct. I have already tried: Replacing the PNG files. Checking the Contents.json file. Committing and pushing all changes to GitHub. Creating new Xcode Cloud builds. Deleting and downloading the project again. Has anyone experienced a similar issue? Is there any caching mechanism in App Store Connect or Xcode Cloud that could cause the old icon to remain visible? Any suggestions would be greatly appreciated. Thank you!
0
0
215
3w
User TCC DB inaccessible for CI setups
Hello, I am looking for guidance on how to pre-provision TCC permissions for automated desktop app testing on the macOS 27 beta. We have maintained a CI testing setup by saving snapshots of VMs with pre-configured user TCC databases. This allowed our UI tests to run without being blocked by permission prompts. This included permissions like screen recording, full disk access or apple events. On the macOS 27 beta, this workflow appears completely broken. While the system TCC database seems to function as it used to, the user TCC database has been moved into a ProtectedSystem container. Direct modifications to the user database now seem impossible. Is there any officially supported way to pre-provision user-level TCC permissions on macOS 27 VMs for automated CI environments? Is Apple's intention here that the system DB is the only one that's actually editable (with SIP disabled)? How does Apple recommend CI platforms handle user-level permission prompts in headless or automated VM environments moving forward? Any insights or recommended alternative workflows would be greatly appreciated. Thank you!
2
0
375
4w
DProvenanceKit: Reasoning observability for AI systems in Swift
Hi everyone, I've been working on a problem that I think many of us building AI in Swift are facing: how do you debug why an AI agent behaves differently between runs? Traditional logging tells you what happened. But when a model skips a step, changes its reasoning order, or produces a different output with identical input — you're left staring at walls of logs with no clear answer to why. I've released DProvenanceKit — a reasoning observability framework for Swift that lets you: Record every reasoning step an agent takes (non-blocking, async-safe) Query for reasoning patterns ("find runs where X happened but Y didn't") Diff two executions to see structural differences Detect regressions automatically with rule-based validation Think of it as Git for AI logic. Example: Swift // Record an execution try await DProvenanceKit.run(contextID: "case-123", store: store) { DProvenanceKit.record(.documentEvaluated(documentID: "DocA", score: 0.95)) DProvenanceKit.record(.conflictDetected(reason: "timeline_inconsistency")) DProvenanceKit.record(.finalDecisionMade(approved: false)) } // Query for suspicious patterns let suspiciousRuns = try await store.queryRuns( TraceQueryDSL() .requiring(step: "conflictDetected") .missing(step: "documentEvaluated") // Find runs where conflict was reported but no docs evaluated ) // Diff two runs let diff = engine.diff(base: runA, comparison: runB) print(diff.changes) // See exactly which steps appeared, disappeared, or moved The design: Built specifically for on-device AI (macOS/iOS) with Apple Foundation Models, MLX, or Core ML Non-blocking recording (touches only in-memory buffer) Durable, crash-safe persistence with SQLite WAL Works with async/await context propagation Status: Experimental (core engine complete, actively evolving). Free for development/testing under BSL 1.1. GitHub: https://github.com/Therealdk8890/DProvenanceKit I'm curious if this resonates with anyone here building AI in Swift. What debugging/observability challenges are you facing with AI systems?
0
0
376
Jun ’26
iOS Simulator crash: EXC_BAD_ACCESS SIGKILL Code Signature Invalid on Xcode 26.5 + macOS 26.5
i'am still getting crash while testing dotnetmaui my app, here is my environment info and crash report @shanselman macOS Tahoe 26.5, macOS Rider 2026.1.2 dotnet workload list Workload version: 10.0.300.3 Installed Workload Id Manifest Version Installation Source ios 26.5.10284/10.0.100 SDK 10.0.300 maccatalyst 26.5.10284/10.0.100 SDK 10.0.300 maui-android 10.0.20/10.0.100 SDK 10.0.300 maui-ios 10.0.20/10.0.100 SDK 10.0.300 xcodebuild -version Xcode 26.5 Build version 17F42 crash-report.txt
3
0
425
Jun ’26
iOS 16 IPSW listed as compatible with iPhone 7 Plus
Hi folks, This webpage: https://developer.apple.com/download/os/#ios-restore-images-ipad-new lists the iPhone 7 Plus as being among the devices that are compatible with iOS 16.7.16. Currently the maximum iOS for the 7 Plus is 15.8.8 according to Settings. The page also indicates that iOS 15.8.8 should be installable on the iPhone 6. Are these typos? The utility idevicerestore refuses to install 16.7.16 on an iPhone 7 Plus so I assume so, but it would help to get confirmation.
Replies
2
Boosts
0
Views
23
Activity
1h
Where Can I Download Reality Converter?
It is gone from where I used to find it on Apple’s web site. Is it deprecated or no longer available?
Replies
5
Boosts
1
Views
2.1k
Activity
1d
Apple Makes Notification Center Testing Nearly Impossible on macOS
I know that using a mouse to control an iPhone simulator on macOS allows me to swipe down from the top right corner to open the Control Center, but why can't I swipe down from the top left corner to open the Notification Center? Am I doing something wrong, or does iOS disable mouse access to the Notification Center on macOS? Also, it seems that you can't use a mouse or gestures to open the Notification Center or Control Center in iPhone Mirroring at all. I saw that Accessibility has a feature to open the Notification Center or Control Center with the keyboard, but it doesn't work in my tests on macOS. I have an application feature that needs to check the effect of the media playback cards in the Notification Center, but I can't check it at all. Every time I compile to a real device and test manually. Is there any way to reliably trigger the Notification Center and Control Center on macOS? Otherwise, testing on a real device every time is too cumbersome, and I can't automate the testing at all!
Replies
0
Boosts
0
Views
46
Activity
2d
Feature Request: Keyboard Shortcuts for Notification Center and Control Center in iOS Simulator and iPhone Mirroring
Hello, I would like to suggest adding dedicated keyboard shortcuts or menu commands for opening Notification Center and Control Center in both iOS Simulator and iPhone Mirroring. At the moment, these interfaces generally need to be opened by dragging downward from a specific area at the top of the simulated or mirrored iPhone screen. While this works for normal manual interaction, it is less reliable when using a mouse, especially when the window is resized or when the pointer needs to begin very close to the screen edge. This also creates difficulties for automated UI testing and computer-use agents, such as Codex-based testing workflows. These systems interact with the screen through mouse and keyboard input, so accurately reproducing an edge swipe can be unreliable. A small difference in the starting position may open Spotlight, scroll the current application, move the window, or fail to trigger the system interface entirely. It would be helpful if Apple could provide commands such as: Open Notification Center Open Control Center Dismiss Notification Center or Control Center These commands could be exposed through: Keyboard shortcuts The Simulator “Device” or “Features” menu The iPhone Mirroring toolbar or menu bar Accessibility or UI automation interfaces For example, Simulator already provides menu commands and shortcuts for actions such as pressing the Home button, locking the device, rotating the screen, and triggering other hardware-related interactions. Notification Center and Control Center could be handled in a similar way. This would improve: Manual testing with a mouse and keyboard Automated testing of applications that interact with notifications, media controls, Bluetooth, Focus modes, screen recording, and other system features Accessibility for users who have difficulty performing precise drag gestures Reliability for computer-use and vision-based testing agents Ideally, the commands should behave like genuine system gestures rather than directly changing internal state, so developers can test the complete user-visible interaction. Thank you for considering this feature.
Replies
1
Boosts
0
Views
78
Activity
4d
dyld crash before main() on macOS Tahoe 26 due to shared cache mapping failure
I am developing a large iOS application with an extensive UI test suite (hundreds of UI test scenarios). After upgrading our CI runners to macOS Tahoe 26, we started observing an intermittent issue where an iOS Simulator may operate normally for many successful application launches before unexpectedly entering a persistent degraded state. Once this occurs, every subsequent application launch crashes inside dyld before reaching our application’s main(). The degraded state persists until the simulator device is reset This causes UI tests to hang and eventually timeout. Business impact CI/CD jobs frequently timeout (90+ minutes per failed run) Significant loss of CI capacity Difficult to maintain reliable quality gates At our scale, this has become a serious issue affecting release confidence and overall engineering productivity. Technical details Crash report MyProject-2026-07-13-125307.ips — a crash report from a CI Demo project dyld_crash_demo — a minimal reproducible project demonstrating the relevant dyld execution path. The project intentionally returns errors from system functions along the shared cache initialization path to demonstrate that dyld continues execution until DyldSharedCache::getUUID(), where it subsequently crashes. Simply open the project and run it in iOS Simulator 26.2. Environment Component Version macOS Tahoe 26.x Xcode 26.2, 26.5 iOS Simulator 26.2, 26.5, 26.6 Architecture Apple Silicon dyld 1378 dyld_sim 1335 What we have ruled out multiple Xcode versions multiple macOS 26.x releases multiple iOS Simulator runtimes multiple simulator devices UI tests with parallel execution disabled deleting the simulator dyld shared cache recreating simulator devices application-specific issues (the crash happens before main()) The issue is still reproducible. Investigation The earliest observable failure sequence is consistently: shared_region_check_np() → "Cannot allocate memory" (ENOMEM) Shared cache mmap(0x180000000, ...) → EACCES The shared cache region remains unmapped DyldSharedCache::getUUID() reads 0x180000058 EXC_BAD_ACCESS (Translation fault) The crash occurs before any application code executes. The first faulting instruction belongs to DyldSharedCache::getUUID(), while the shared-cache region is still unmapped. Published dyld source analysis Relevant execution path: loadDyldCache() ↓ mapSplitCachePrivate() ↓ preflightCacheFile() Based on the published sources of dyld-1378, this appears to be the execution path leading to the observed failure. After the loadDyldCache() function failed to load the cache, dyld continued execution anyway and moved on to calling the DyldSharedCache::getUUID() function, where it subsequently failed. Additional observations Once the simulator enters the degraded state: simctl spawn succeeds. simctl launch crashes inside dyld before reaching main(). During our experiments, both processes were created by the same launchd_sim instance Before dyld::_dyld_start, both processes expose the same virtual address layout, including an unmapped shared-cache region (0x180000000–0x300000000). Current workaround As a temporary mitigation, we launch the application with DYLD_SHARED_REGION=avoid In our environment, this completely avoids the launch failures. However, this mode appears to be undocumented and intended primarily for debugging. We are concerned that it may change or stop working in future macOS or Xcode releases, so we are reluctant to depend on it in our production CI infrastructure. Questions 1. dyld Is it expected for dyld to continue dereferencing the shared-cache header after both the shared-region initialization and the shared-cache mapping have already failed? Execution appears to continue into: loadInfo.loadAddress->getUUID(cacheUuid) which results in an access to an unmapped address. The attached demo project reproduces this behavior by simulating failures from the shared-cache initialization path. Is there an expected fallback behavior for this situation or is continuing into DyldSharedCache::getUUID() the intended behavior ? 2. Simulator state Why does a simulator that initially launches applications successfully eventually enter a state where every subsequent launch fails while the shared cache can no longer be mapper? The earliest related system log we have found is: vm_shared_region_start_address() returned 0x1 Is this a known CoreSimulator or macOS Tahoe issue? If so, is there a supported workaround or recommended long-term solution besides DYLD_SHARED_REGION=avoid? Any guidance would be greatly appreciated.
Replies
1
Boosts
28
Views
482
Activity
6d
[FLUTTER] My app suddenly stopped working
Good morning. I have been developing an app for my company using flutter for a couple of months. A few months ago I deployed it through TestFlight, as it's supposed to be used by our staff exclusively. It has been working flawlessly since may, but today it has stopped working suddenly without me doing any kind of update or change to the code. The issue is that it's unable to send any kind of http request to our server, which it could do until literally yesterday. The error messages are both Connection Timed Out and Bad File Descriptor. As I have not updated the app in several days and it has suddenly stopped working without me changing anything, I suppose it could be a problem with a change of permissions or conditions that I have not agreed to. What could have happened? I use flutter 3.44.1 on windows and deploy using codemagic. Thank you for your cooperation.
Replies
2
Boosts
0
Views
129
Activity
6d
Self-intersecting paths in Icon Composer
Hello! Double checking I'm not missing something before I submit a feature request -- possible for self-intersecting paths to render as layered instead of merged? For example, a spiral path with the tail overlapping the tip will currently "flatten" into a circle instead of rendering a translucent overlap.
Replies
0
Boosts
0
Views
98
Activity
1w
Release notes for July 6 2026 OS are missing in feedback assistant app
Or is it just me does anybody else see this issue or are you seeing it properly? I had to go to developerthe apple.com/operating systems sorry are you using voice control but I had to go to the actual website to get the notes for today July 6 2026 around 240 or so I even tried logging out of my iPhone assistant app logging back in it's showing the old ones from about two or three weeks ago. It's not a big deal I'm just trying to figure out if anybody is seeing this?
Replies
1
Boosts
0
Views
147
Activity
2w
An Apple Library Primer
Apple’s library technology has a long and glorious history, dating all the way back to the origins of Unix. This does, however, mean that it can be a bit confusing to newcomers. This is my attempt to clarify some terminology. If you have any questions or comments about this, start a new thread and tag it with Linker so that I see it. Share and Enjoy — Quinn “The Eskimo!” @ Developer Technical Support @ Apple let myEmail = "eskimo" + "1" + "@" + "apple.com" An Apple Library Primer Apple’s tools support two related concepts: Platform — This is the platform itself; macOS, iOS, iOS Simulator, and Mac Catalyst are all platforms. Architecture — This is a specific CPU architecture used by a platform. arm64 and x86_64 are both architectures. A given architecture might be used by multiple platforms. The most obvious example of this arm64, which is used by all of the platforms listed above. Code built for one platform will not work on another platform, even if both platforms use the same architecture. Code is usually packaged in either a Mach-O file or a static library. Mach-O is used for executables (MH_EXECUTE), dynamic libraries (MH_DYLIB), bundles (MH_BUNDLE), and object files (MH_OBJECT). These can have a variety of different extensions; the only constant is that .o is always used for a Mach-O containing an object file. Use otool and nm to examine a Mach-O file. Use vtool to quickly determine the platform for which it was built. Use size to get a summary of its size. Use dyld_info to get more details about a dynamic library. IMPORTANT All the tools mentioned here are documented in man pages. For information on how to access that documentation, see Reading UNIX Manual Pages. There’s also a Mach-O man page, with basic information about the file format. Many of these tools have old and new variants, using the -classic suffix or llvm- prefix, respectively. For example, there’s nm-classic and llvm-nm. If you run the original name for the tool, you’ll get either the old or new variant depending on the version of the currently selected tools. To explicitly request the old or new variants, use xcrun. The term Mach-O image refers to a Mach-O that can be loaded and executed without further processing. That includes executables, dynamic libraries, and bundles, but not object files. A dynamic library has the extension .dylib. You may also see this called a shared library. A framework is a bundle structure with the .framework extension that has both compile-time and run-time roles: At compile time, the framework combines the library’s headers and its stub library (stub libraries are explained below). At run time, the framework combines the library’s code, as a Mach-O dynamic library, and its associated resources. The exact structure of a framework varies by platform. For the details, see Placing Content in a Bundle. macOS supports both frameworks and standalone dynamic libraries. Other Apple platforms support frameworks but not standalone dynamic libraries. Historically these two roles were combined, that is, the framework included the headers, the dynamic library, and its resources. These days Apple ships different frameworks for each role. That is, the macOS SDK includes the compile-time framework and macOS itself includes the run-time one. Most third-party frameworks continue to combine these roles. A static library is an archive of one or more object files. It has the extension .a. Use ar, libtool, and ranlib to inspect and manipulate these archives. The static linker, or just the linker, runs at build time. It combines various inputs into a single output. Typically these inputs are object files, static libraries, dynamic libraries, and various configuration items. The output is most commonly a Mach-O image, although it’s also possible to output an object file. The linker may also output metadata, such as a link map (see Using a Link Map to Track Down a Symbol’s Origin). The linker has seen three major implementations: ld — This dates from the dawn of Mac OS X. ld64 — This was a rewrite started in the 2005 timeframe. Eventually it replaced ld completely. If you type ld, you get ld64. ld_prime — This was introduced with Xcode 15. Again, this isn’t a separate tool. Rather, ld supported the -ld_classic and -ld_new options to select a specific implementation. Note During the Xcode 15 beta cycle these options were named -ld64 and -ld_prime. I continue to use those original names because the definition of new changes over time (some of us still think of ld64 as the new linker ;–). Note Xcode 27 beta removed the ld64 implementation. The ld tool now contains just the ld_prime implementation. The dynamic linker loads Mach-O images at runtime. Its path is /usr/lib/dyld, so it’s often referred to as dyld, dyld, or DYLD. Personally I pronounced that dee-lid, but some folks say di-lid and others say dee-why-el-dee. IMPORTANT Third-party executables must use the standard dynamic linker. Other Unix-y platforms support the notion of a statically linked executable, one that makes system calls directly. This is not supported on Apple platforms. Apple platforms provide binary compatibility via system dynamic libraries and frameworks, not at the system call level. Note Apple platforms have vestigial support for custom dynamic linkers (your executable tells the system which dynamic linker to use via the LC_LOAD_DYLINKER load command). This facility originated on macOS’s ancestor platform and has never been a supported option on any Apple platform. The dynamic linker has seen 4 major revisions. See WWDC 2017 Session 413 (referenced below) for a discussion of versions 1 through 3. Version 4 is basically a merging of versions 2 and 3. Version 3 introduced the concept of a launch closure, which is an important optimisation. The dyld man page is chock-full of useful info, including a discussion of how it finds images at runtime. Every dynamic library has an install name, which is how the dynamic linker identifies the library. Historically that was the path where you installed the library. That’s still true for most system libraries, but nowadays a third-party library should use an rpath-relative install name. For more about this, see Dynamic Library Identification. Mach-O images are position independent, that is, they can be loaded at any location within the process’s address space. Historically, Mach-O supported the concept of position-dependent images, ones that could only be loaded at a specific address. While it may still be possible to create such an image, it’s no longer a good life choice. Mach-O images have a default load address, also known as the base address. For modern position-independent images this is 0 for library images and 4 GiB for executables (leaving the bottom 32 bits of the process’s address space unmapped). When the dynamic linker loads an image, it chooses an address for the image and then rebases the image to that address. If you take that address and subtract the image’s load address, you get a value known as the slide. Xcode 15 introduced the concept of a mergeable library. This a dynamic library with extra metadata that allows the linker to embed it into the output Mach-O image, much like a static library. Mergeable libraries have many benefits. For all the backstory, see WWDC 2023 Session 10268 Meet mergeable libraries. For instructions on how to set this up, see Configuring your project to use mergeable libraries. If you put a mergeable library into a framework structure you get a mergeable framework. Xcode 15 also introduced the concept of a static framework. This is a framework structure where the framework’s dynamic library is replaced by a static library. Note It’s not clear to me whether this offers any benefit over creating a mergeable framework. Earlier versions of Xcode did not have proper static framework support. That didn’t stop folks trying to use them, which caused all sorts of weird build problems. A universal binary is a file that contains multiple architectures for the same platform. Universal binaries always use the universal binary format. Use the file command to learn what architectures are within a universal binary. Use the lipo command to manipulate universal binaries. A universal binary’s architectures are either all in Mach-O format or all in the static library archive format. The latter is called a universal static library. A universal binary has the same extension as its non-universal equivalent. That means a .a file might be a static library or a universal static library. Most tools work on a single architecture within a universal binary. They default to the architecture of the current machine. To override this, pass the architecture in using a command-line option, typically -arch or --arch. An XCFramework is a single document package that includes libraries for any combination of platforms and architectures. It has the extension .xcframework. An XCFramework holds either a framework, a dynamic library, or a static library. All the elements must be the same type. Use xcodebuild to create an XCFramework. For specific instructions, see Xcode Help > Distribute binary frameworks > Create an XCFramework. Historically there was no need to code sign libraries in SDKs. If you shipped an SDK to another developer, they were responsible for re-signing all the code as part of their distribution process. Xcode 15 changes this. You should sign your SDK so that a developer using it can verify this dependency. For more details, see WWDC 2023 Session 10061 Verify app dependencies with digital signatures and Verifying the origin of your XCFrameworks. A stub library is a compact description of the contents of a dynamic library. It has the extension .tbd, which stands for text-based description (TBD). Apple’s SDKs include stub libraries to minimise their size; for the backstory, read this post. Use the tapi tool to create and manipulate stub libraries. In this context TAPI stands for a text-based API, an alternative name for TBD. Oh, and on the subject of tapi, I’d be remiss if I didn’t mention tapi-analyze! Stub libraries currently use YAML format, a fact that’s relevant when you try to interpret linker errors. If you’re curious about the format, read the tapi-tbdv4 man page. There’s also a JSON variant documented in the tapi-tbdv5 man page. Note Back in the day stub libraries used to be Mach-O files with all the code removed (MH_DYLIB_STUB). This format has long been deprecated in favour of TBD. Historically, the system maintained a dynamic linker shared cache, built at runtime from its working set of dynamic libraries. In macOS 11 and later this cache is included in the OS itself. Libraries in the cache are no longer present in their original locations on disk: % ls -lh /usr/lib/libSystem.B.dylib ls: /usr/lib/libSystem.B.dylib: No such file or directory Apple APIs, most notably dlopen, understand this and do the right thing if you supply the path of a library that moved into the cache. That’s true for some, but not all, command-line tools, for example: % dyld_info -exports /usr/lib/libSystem.B.dylib /usr/lib/libSystem.B.dylib [arm64e]: -exports: offset symbol … 0x5B827FE8 _mach_init_routine % nm /usr/lib/libSystem.B.dylib …/nm: error: /usr/lib/libSystem.B.dylib: No such file or directory When the linker creates a Mach-O image, it adds a bunch of helpful information to that image, including: The target platform The deployment target, that is, the minimum supported version of that platform Information about the tools used to build the image, most notably, the SDK version A build UUID For more information about the build UUID, see TN3178 Checking for and resolving build UUID problems. To dump the other information, run vtool. In some cases the OS uses the SDK version of the main executable to determine whether to enable new behaviour or retain old behaviour for compatibility purposes. You might see this referred to as compiled against SDK X. I typically refer to this as a linked-on-or-later check. Apple tools support the concept of autolinking. When your code uses a symbol from a module, the compiler inserts a reference (using the LC_LINKER_OPTION load command) to that module into the resulting object file (.o). When you link with that object file, the linker adds the referenced module to the list of modules that it searches when resolving symbols. Autolinking is obviously helpful but it can also cause problems, especially with cross-platform code. For information on how to enable and disable it, see the Build settings reference. Mach-O uses a two-level namespace. When a Mach-O image imports a symbol, it references the symbol name and the library where it expects to find that symbol. This improves both performance and reliability but it precludes certain techniques that might work on other platforms. For example, you can’t define a function called printf and expect it to ‘see’ calls from other dynamic libraries because those libraries import the version of printf from libSystem. To help folks who rely on techniques like this, macOS supports a flat namespace compatibility mode. This has numerous sharp edges — for an example, see the posts on this thread — and it’s best to avoid it where you can. If you’re enabling the flat namespace as part of a developer tool, search the ’net for dyld interpose to learn about an alternative technique. WARNING Dynamic linker interposing is not documented as API. While it’s a useful technique for developer tools, do not use it in products you ship to end users. Apple platforms use DWARF. When you compile a file, the compiler puts the debug info into the resulting object file. When you link a set of object files into a executable, dynamic library, or bundle for distribution, the linker does not include this debug info. Rather, debug info is stored in a separate debug symbols document package. This has the extension .dSYM and is created using dsymutil. Use symbols to learn about the symbols in a file. Use dwarfdump to get detailed information about DWARF debug info. Use atos to map an address to its corresponding symbol name. Different languages use different name mangling schemes: C, and all later languages, add a leading underscore (_) to distinguish their symbols from assembly language symbols. C++ uses a complex name mangling scheme. Use the c++filt tool to undo this mangling. Likewise, for Swift. Use swift demangle to undo this mangling. For a bunch more info about symbols in Mach-O, see Understanding Mach-O Symbols. This includes a discussion of weak references and weak definition. If your code is referencing a symbol unexpectedly, see Determining Why a Symbol is Referenced. To remove symbols from a Mach-O file, run strip. To hide symbols, run nmedit. It’s common for linkers to divide an object file into sections. You might find data in the data section and code in the text section (text is an old Unix term for code). Mach-O uses segments and sections. For example, there is a text segment (__TEXT) and within that various sections for code (__TEXT > __text), constant C strings (__TEXT > __cstring), and so on. Over the years there have been some really good talks about linking and libraries at WWDC, including: WWDC 2023 Session 10268 Meet mergeable libraries WWDC 2022 Session 110362 Link fast: Improve build and launch times WWDC 2022 Session 110370 Debug Swift debugging with LLDB WWDC 2021 Session 10211 Symbolication: Beyond the basics WWDC 2019 Session 416 Binary Frameworks in Swift — Despite the name, this covers XCFrameworks in depth. WWDC 2018 Session 415 Behind the Scenes of the Xcode Build Process WWDC 2017 Session 413 App Startup Time: Past, Present, and Future WWDC 2016 Session 406 Optimizing App Startup Time Note The older talks are no longer available from Apple, but you may be able to find transcripts out there on the ’net. Historically Apple published a document, Mac OS X ABI Mach-O File Format Reference, or some variant thereof, that acted as the definitive reference to the Mach-O file format. This document is no longer available from Apple. If you’re doing serious work with Mach-O, I recommend that you find an old copy. It’s definitely out of date, but there’s no better place to get a high-level introduction to the concepts. The Mach-O Wikipedia page has a link to an archived version of the document. For the most up-to-date information about Mach-O, see the declarations and doc comments in <mach-o/loader.h>. Revision History 2026-07-06 Added the term launch closure. 2026-07-02 Added a note about fate of ld64. 2025-08-04 Added a link to Determining Why a Symbol is Referenced. 2025-06-29 Added information about autolinking. 2025-05-21 Added a note about the legacy Mach-O stub library format (MH_DYLIB_STUB). 2025-04-30 Added a specific reference to the man pages for the TBD format. 2025-03-01 Added a link to Understanding Mach-O Symbols. Added a link to TN3178 Checking for and resolving build UUID problems. Added a summary of the information available via vtool. Discussed linked-on-or-later checks. Explained how Mach-O uses segments and sections. Explained the old (-classic) and new (llvm-) tool variants. Referenced the Mach-O man page. Added basic info about the strip and nmedit tools. 2025-02-17 Expanded the discussion of dynamic library identification. 2024-10-07 Added some basic information about the dynamic linker shared cache. 2024-07-26 Clarified the description of the expected load address for Mach-O images. 2024-07-23 Added a discussion of position-independent images and the image slide. 2024-05-08 Added links to the demangling tools. 2024-04-30 Clarified the requirement to use the standard dynamic linker. 2024-03-02 Updated the discussion of static frameworks to account for Xcode 15 changes. Removed the link to WWDC 2018 Session 415 because it no longer works )-: 2024-03-01 Added the WWDC 2023 session to the list of sessions to make it easier to find. Added a reference to Using a Link Map to Track Down a Symbol’s Origin. Made other minor editorial changes. 2023-09-20 Added a link to Dynamic Library Identification. Updated the names for the static linker implementations (-ld_prime is no more!). Removed the beta epithet from Xcode 15. 2023-06-13 Defined the term Mach-O image. Added sections for both the static and dynamic linkers. Described the two big new features in Xcode 15: mergeable libraries and dependency verification. 2023-06-01 Add a reference to tapi-analyze. 2023-05-29 Added a discussion of the two-level namespace. 2023-04-27 Added a mention of the size tool. 2023-01-23 Explained the compile-time and run-time roles of a framework. Made other minor editorial changes. 2022-11-17 Added an explanation of TAPI. 2022-10-12 Added links to Mach-O documentation. 2022-09-29 Added info about .dSYM files. Added a few more links to WWDC sessions. 2022-09-21 First posted.
Replies
0
Boosts
0
Views
17k
Activity
2w
DMG background image not visible on old macOS
I distribute my AppleScript applet in a read only DMG file. I want to add a simple background image which encourages users to copy the applet to their Applications folder. I use the Finder function "Show View Options" which has the option to add a picture. That seems to work in macOS Tahoe. However, the background image is not visible on earlier versions of macOS. I've also found that a background image set on a Mac running Monterey is not visible on a Mac running Tahoe. Is there a way to add a background image which works across multiple macOS versions ?
Replies
1
Boosts
0
Views
215
Activity
2w
Double Tap for Apple Watch Simulator
I couldn’t find a way to simulate the Apple Watch double-tap gesture in the watchOS Simulator. Is there a keyboard shortcut or another way to trigger it? I’m implementing support for double tap in my app, so being able to test it in the Simulator would be really helpful. If anyone knows whether this is possible, I’d appreciate the help!
Replies
0
Boosts
1
Views
192
Activity
2w
Testing Revoke App Consent
Hi, I have two questions: Is there any way to test the revoke consent flow on a local build of our app? When I try using Sandbox to "Revoke App Consent" with the application bundle ID of a locally built and deployed app, it fails with "Cannot Trigger Notification. The bundle ID you provided is invalid or you do not have access to the app." https://developer.apple.com/support/age-assurance/#responsibility states that "When a parent or guardian revokes consent for their child to access an app, Apple will prevent the app from launching." However, when using the Sandbox to revoke app consent, the app is still launchable. Does anyone know if the app being launchable is exclusive to Sandbox, and how this works in prouduction?
Replies
0
Boosts
0
Views
220
Activity
3w
App Store Connect/Xcode Cloud still shows old app icon
Hello, I am having problems with my app icon in App Store Connect and Xcode Cloud. I replaced the app icon with a new one (including the 1024×1024 App Store icon), committed and pushed all changes to GitHub, and Xcode Cloud successfully created a new build. However, App Store Connect and TestFlight still seem to show the old icon in some places. In Xcode, the new icon is visible, and the asset catalog appears to be correct. I have already tried: Replacing the PNG files. Checking the Contents.json file. Committing and pushing all changes to GitHub. Creating new Xcode Cloud builds. Deleting and downloading the project again. Has anyone experienced a similar issue? Is there any caching mechanism in App Store Connect or Xcode Cloud that could cause the old icon to remain visible? Any suggestions would be greatly appreciated. Thank you!
Replies
0
Boosts
0
Views
215
Activity
3w
User TCC DB inaccessible for CI setups
Hello, I am looking for guidance on how to pre-provision TCC permissions for automated desktop app testing on the macOS 27 beta. We have maintained a CI testing setup by saving snapshots of VMs with pre-configured user TCC databases. This allowed our UI tests to run without being blocked by permission prompts. This included permissions like screen recording, full disk access or apple events. On the macOS 27 beta, this workflow appears completely broken. While the system TCC database seems to function as it used to, the user TCC database has been moved into a ProtectedSystem container. Direct modifications to the user database now seem impossible. Is there any officially supported way to pre-provision user-level TCC permissions on macOS 27 VMs for automated CI environments? Is Apple's intention here that the system DB is the only one that's actually editable (with SIP disabled)? How does Apple recommend CI platforms handle user-level permission prompts in headless or automated VM environments moving forward? Any insights or recommended alternative workflows would be greatly appreciated. Thank you!
Replies
2
Boosts
0
Views
375
Activity
4w
DProvenanceKit: Reasoning observability for AI systems in Swift
Hi everyone, I've been working on a problem that I think many of us building AI in Swift are facing: how do you debug why an AI agent behaves differently between runs? Traditional logging tells you what happened. But when a model skips a step, changes its reasoning order, or produces a different output with identical input — you're left staring at walls of logs with no clear answer to why. I've released DProvenanceKit — a reasoning observability framework for Swift that lets you: Record every reasoning step an agent takes (non-blocking, async-safe) Query for reasoning patterns ("find runs where X happened but Y didn't") Diff two executions to see structural differences Detect regressions automatically with rule-based validation Think of it as Git for AI logic. Example: Swift // Record an execution try await DProvenanceKit.run(contextID: "case-123", store: store) { DProvenanceKit.record(.documentEvaluated(documentID: "DocA", score: 0.95)) DProvenanceKit.record(.conflictDetected(reason: "timeline_inconsistency")) DProvenanceKit.record(.finalDecisionMade(approved: false)) } // Query for suspicious patterns let suspiciousRuns = try await store.queryRuns( TraceQueryDSL() .requiring(step: "conflictDetected") .missing(step: "documentEvaluated") // Find runs where conflict was reported but no docs evaluated ) // Diff two runs let diff = engine.diff(base: runA, comparison: runB) print(diff.changes) // See exactly which steps appeared, disappeared, or moved The design: Built specifically for on-device AI (macOS/iOS) with Apple Foundation Models, MLX, or Core ML Non-blocking recording (touches only in-memory buffer) Durable, crash-safe persistence with SQLite WAL Works with async/await context propagation Status: Experimental (core engine complete, actively evolving). Free for development/testing under BSL 1.1. GitHub: https://github.com/Therealdk8890/DProvenanceKit I'm curious if this resonates with anyone here building AI in Swift. What debugging/observability challenges are you facing with AI systems?
Replies
0
Boosts
0
Views
376
Activity
Jun ’26
API Diff Report
Earlier from the apple documentation, there was an option to get the API difference between OS. That option is no longer present. How do we get the API difference now. Is there anyway we can get this.
Replies
1
Boosts
0
Views
388
Activity
Jun ’26
iPadOS 27 beta for A16 not posted
There are two beta restore files for A16, both are for ipad15,8. Please post one for ipad15,7
Replies
0
Boosts
0
Views
242
Activity
Jun ’26
Device Hub becomes completely black
When resizing using Device Hub, it becomes completely black and gets stuck at 2560 × 1440.
Replies
1
Boosts
0
Views
271
Activity
Jun ’26
iOS Simulator crash: EXC_BAD_ACCESS SIGKILL Code Signature Invalid on Xcode 26.5 + macOS 26.5
i'am still getting crash while testing dotnetmaui my app, here is my environment info and crash report @shanselman macOS Tahoe 26.5, macOS Rider 2026.1.2 dotnet workload list Workload version: 10.0.300.3 Installed Workload Id Manifest Version Installation Source ios 26.5.10284/10.0.100 SDK 10.0.300 maccatalyst 26.5.10284/10.0.100 SDK 10.0.300 maui-android 10.0.20/10.0.100 SDK 10.0.300 maui-ios 10.0.20/10.0.100 SDK 10.0.300 xcodebuild -version Xcode 26.5 Build version 17F42 crash-report.txt
Replies
3
Boosts
0
Views
425
Activity
Jun ’26
Feedback Assistant doesn’t work
I can’t make or edit new feedback or drafts, this just shows up or it takes too long to load.
Replies
1
Boosts
2
Views
335
Activity
Jun ’26