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

Posts under General subtopic

Post

Replies

Boosts

Views

Activity

Why does a Swift test think my simple struct is main actor-isolated?
My experience with Swift 6 strict concurrency so far doesn't match my understanding of implicit MainActor isolation semantics. This is a cross-post from StackOverflow. I will link answers between both forums. TL;DR Build succeeds when testing a struct declared in the test module, but fails when the struct is moved to the main module: Main actor-isolated property … cannot be accessed from outside the actor. Steps to reproduce Open up Xcode 26 beta 2 on macOS 26 (probably also ok on current stables). Create a new Swift app with Swift testing, no storage. Call it WhatTheSwift. Set the Swift Language Version on all three targets to Swift 6. Update the default test file to be this: import Testing @testable import WhatTheSwift struct WhatTheSwiftTests { @Test func example() async throws { let thing = Thing(foo: "bar") #expect(thing.foo == "bar") } } struct Thing { let foo: String } That should build fine, and the tests should pass. Now, move the Thing declaration into its own Thing.swift file in the WhatTheSwift module, and try running the test again. You should see this: Observations Marking the test @MainActor allows the test to pass, suggesting the compiler actually wants to isolate Thing.foo to the main actor. My question Why? And why only when Thing is in a different module?
2
0
269
Jun ’25
zsh终端中执行python3或pip3命令,弹出Install Command Line Developer Tools弹窗安装
OS:macOS15.5 CPU:Apple M1 Pro zsh终端中执行python或pip命令,提示未找到命令,但执行python3或pip3命令,预期也是提示未找到命令,实际结果弹出Install Command Line Developer Tools弹窗安装,网上查阅资料,删除/usr/bin/python3、/usr/bin/pip3、/usr/local/bin/python3、/usr/local/bin/pip3文件即可达到预期,但无权限删除/usr/bin/python3与/usr/bin/pip3文件,尝试过root账号、进行系统恢复模式暂时禁用SIP解决方案,都无法解决;🙏大佬指点一二;
1
0
242
Jun ’25
Portal of Apple for tracking health(crashes/hangs)
We are looking for a platform or portal provided by Apple that allows us to track crashes, hangs, or other runtime issues faced by users while using our iOS/macOS application. This is similar to how we currently use Windows Error Reporting (WER) for our Windows application. Important note: Our application is not distributed via the Apple App Store — it is delivered through enterprise distribution or ad-hoc provisioning.
3
0
224
Apr ’25
Capacitor iOS Plugin with MobileVLCKit – Swift Plugin Not Recognized from Angular
Hi everyone, I'm developing a Capacitor plugin to display an RTSP video stream using MobileVLCKit on iOS. The Android side works perfectly, but I can’t get the iOS plugin to work — it seems my Swift file is not being detected or recognized, even though I’ve followed the official steps. What works: I followed the Capacitor Plugin Development Guide. I implemented the Android version of the plugin in Java inside the android/ folder. Everything works perfectly from Angular: the plugin is recognized and calls execute correctly. The issue on iOS: I implemented the iOS part in Swift, using the official MobileVLCKit documentation. I initially placed my RtspVlcPlugin.swift file in the plugin’s iOS folder, as the docs suggest. Then I moved it directly into the main app’s ios/App/App/ folder next to AppDelegate.swift and tried manual registration. The problem: Even though I manually register the plugin with: if let bridge = self.window?.rootViewController as? CAPBridgeViewController { bridge.bridge?.registerPluginInstance(RtspVlcPlugin()) print("✅ Plugin RtspVlcPlugin registered manually.") } It prints the registration message just fine. BUT from Angular, the plugin is not recognized: Capacitor.Plugins.RtspVlcPlugin has no methods, and I get this error: "code":"UNIMPLEMENTED" I also tried declaring @objc(RtspVlcPlugin) and extending CAPPlugin. I’ve verified RtspVlcPlugin.swift is added to the target and compiled. The Swift file doesn’t seem to register or expose any methods to Angular. I even tried adding the code without using a plugin at all — just creating a Swift class and using it via the AppDelegate, but it still doesn't expose any callable methods. My Swift code (RtspVlcPlugin.swift): import Capacitor import MobileVLCKit @objc(RtspVlcPlugin) public class RtspVlcPlugin: CAPPlugin, VLCMediaPlayerDelegate { var mediaPlayer: VLCMediaPlayer? var containerView: UIView? var spinner: UIActivityIndicatorView? @objc func iniciar(_ call: CAPPluginCall) { guard let urlStr = call.getString("url"), let x = call.getDouble("x"), let y = call.getDouble("y"), let w = call.getDouble("width"), let h = call.getDouble("height"), let url = URL(string: urlStr) else { call.reject("Missing parameters") return } DispatchQueue.main.async { self.containerView?.removeFromSuperview() let cont = UIView(frame: CGRect(x: x, y: y, width: w, height: h)) cont.backgroundColor = .black cont.layer.cornerRadius = 16 cont.clipsToBounds = true let sp = UIActivityIndicatorView(style: .large) sp.center = CGPoint(x: w/2, y: h/2) sp.color = .white sp.startAnimating() cont.addSubview(sp) self.spinner = sp self.containerView = cont self.bridge?.viewController?.view.addSubview(cont) let player = VLCMediaPlayer() player.delegate = self player.drawable = cont player.media = VLCMedia(url: url) self.mediaPlayer = player player.play() call.resolve() } } @objc func cerrar(_ call: CAPPluginCall) { DispatchQueue.main.async { self.mediaPlayer?.stop() self.mediaPlayer = nil self.spinner?.stopAnimating() self.spinner?.removeFromSuperview() self.spinner = nil self.containerView?.removeFromSuperview() self.containerView = nil call.resolve() } } public func mediaPlayerStateChanged(_ aNotification: Notification!) { guard let player = mediaPlayer, player.state == .playing, let sp = spinner else { return } DispatchQueue.main.async { sp.stopAnimating() sp.removeFromSuperview() self.spinner = nil } } } In the Angular project, I’m using the plugin by manually registering it with registerPlugin from @capacitor/core. Specifically, in the service where I need it, I do the following: import { registerPlugin } from '@capacitor/core'; const RtspVlcPlugin: any = registerPlugin('RtspVlcPlugin'); After this, I try to call the methods defined in the iOS plugin, like RtspVlcPlugin.iniciar({ ... }), but I get an UNIMPLEMENTED error, which suggests that the plugin is not exposing its methods properly to the Angular/Capacitor environment. That makes me believe the problem lies in how the Swift file is integrated or registered, rather than how it is used from Angular. I’d appreciate any guidance on how to properly expose a Swift-based Capacitor plugin’s methods so that they are accessible from Angular. Is there any additional registration step or metadata I might be missing on the iOS side?
1
0
193
Jul ’25
How to call a Swift file directly from Angular using Capacitor?
Hi everyone, I’m working on a Capacitor app built with Angular, and I’m trying to call a Swift class directly from the root of the iOS project (next to AppDelegate.swift) without using a full Capacitor plugin structure. The Swift file is called RtspVlcPlugin.swift and looks like this: import Capacitor @objc(RtspVlcPlugin) public class RtspVlcPlugin: CAPPlugin { @objc func iniciar(_ call: CAPPluginCall) { call.resolve() } } In AppDelegate.swift I register it like this: if let bridge = self.window?.rootViewController as? CAPBridgeViewController { bridge.bridge?.registerPluginInstance(RtspVlcPlugin()) print("✅ RtspVlcPlugin registered.") } The registration message prints correctly in Xcode logs. But from Angular, when I try to call it like this: import { registerPlugin } from '@capacitor/core'; const RtspVlcPlugin: any = registerPlugin('RtspVlcPlugin'); RtspVlcPlugin.iniciar({ ... }); I get this error: {"code":"UNIMPLEMENTED"} So, even though the plugin is registered manually, it’s not exposing any methods to the Angular/Capacitor runtime. My question is: What is the correct way to access a manually created Swift class (in the root of the iOS project) from Angular via Capacitor? Thanks in advance!
1
0
162
Jul ’25
NSUbiquitousContainers
I'm using Xcode 16.3 and I want to add the key "NSUbiquitousContainers" but I cannot do it in the Entitlements file, it should be in info.plist file! I have done it before but in previous versions of Xcode when the info.plist was in the project navigator. However, now I cannot find the file and I did not find any way to create it! Please guide me in detail how to proceed (I'm not new to Swift or SwiftUI but not familiar to project settings)?
1
0
99
Apr ’25
Unexpected timezone issues
Hi, my server in Melbourne Australia is getting weather forecasts from a few places around Australia. When I look at the daily timesteps that I get back, they might be something like this: "days": [ { "forecastStart": "2025-06-25T00:00:00Z", "forecastEnd": "2025-06-26T00:00:00Z", "daytimeForecast": { "forecastStart": "2025-06-25T07:00:00Z", "forecastEnd": "2025-06-25T19:00:00Z", "overnightForecast": { "forecastStart": "2025-06-25T19:00:00Z", "forecastEnd": "2025-06-26T07:00:00Z",} It doesn't matter where I ask for - Melbourne, Darwin, Perth, it always comes back the same. The documentation says that daytimeForecast is 7 am to 7 pm local and overnightForecast is 7pm to 7 am local. However, in a place like Perth 7-19Z is 3 pm to 3 am, not 7 pm to 7 am like advertised. I can see that for any given date, there are 3 maximum temperature forecasts, a 24 hour max, a daytime max and an overnight max and they differ from each other. Can anyone help me understand what's happening here? And furthermore in the example above, the 24 hour forecasts that have, for example this: "forecastStart": "2025-06-25T00:00:00Z" ... Can the 00:00:00Z be trusted literally? Or is it more the case that it's "2025-06-25" but the HMS got tacked on in a conversion?
3
0
120
Jul ’25
Building an app with both GUI and Command Line versions
I use CMake for my builds not the XCode GUI. I want to be able to build a single .app that contains both the GUI version and the command line version. I have seen products that ship both as part of the same .app (e.g. CMake) so this is clearly entirely possible, the 64k question is HOW? Right now I am building them as separate apps - lets call them DSS and DSSCL (*). The code base for each is in its own directory - each with its own CMakelists.txt file. My initial thoughts are to change the build for DSSCL so it doesn't create a bundle and then simply copy the DSSCL command and related .qm files into DSS.app/.../MacOS. However that's likely enough totally wrong, so how should I handle this please. As much detail as possible please, I am very new to macOS development -please don't assume knowledge of stuff that's second nature to you Many thanks David (*) Strictly they are DeepSkyStacker and DeepSkyStackerCL
7
0
241
Apr ’25
Installer package is terminated after 600 seconds
Hi, I have an installer package that runs a postinstall script. The script can take a long time to complete, as one thing it does is copy about 10-30 GB of files using the rsync tool. We noticed on macOS 15 that the installer would fail almost exactly 10 minutes after it started. Looking in the /var/log/install.log, I see a message like this: 2025-07-01 12:54:32-07 Work-M1 package_script_service[21562]: PackageKit: Terminating PKInstallTask(pid:21573). Task has exceeded its 600 seconds of runtime. This does not happen in my testing on macOS 12 (Monterey) I have a few questions about this: A) Is this documented, and which OS introduced this? B) Is there a way a developer can extend or disable the time limit via a setting in the installer package. Or if not, is there a way end end user can disable it temporarily on their system? Thanks, Andrew
4
0
163
Sep ’25
Lost X Code Project for a Live Application
Hello, I currently have a live application in the iOS App Store that needs an update to start functioning again, but I've lost the source code in a hard drive failure. Is there a way to reverse engineer the currently deployed package that is live (and also a way to download it from App Store Connect)⁉️ The development change itself is just a very small change for an API route in the code itself. I could even direct an engineer at Apple to make the change in 5 minutes! Let me know if this is possible. Thanks❗️
1
0
86
Apr ’25
XCFramework with Common Third-Party Dependencies Causing Duplicate Symbol Conflicts
What is the recommended approach for distributing an XCFramework that uses common third-party dependencies (like Google Maps) when client apps may also use the same dependencies, resulting in duplicate symbol conflicts? I'm developing a closed-source SDK distributed as an XCFramework. My SDK internally uses Google Maps for mapping functionality. However, when clients integrate my XCFramework into their apps that also use Google Maps, we encounter duplicate symbol errors. What I've Tried: Static vs Dynamic Linking: Both approaches result in conflicts Static linking: Google Maps symbols compiled into my binary Dynamic linking: GoogleMaps.framework bundled with my XCFramework Build Configuration: Set "Build Libraries for Distribution" = YES Tried various linking strategies Architecture Changes: Used @implementation_only import Wrapped code with #if canImport(GoogleMaps) However, the dependencies still get linked at build time
9
0
603
Dec ’25
Embed/Do Not Embed & Mach-O type
My Xcode project has the following configuration: 1 iOS app target 1 Xcode framework target (mach-o-type "Dynamic Library") 5 static libraries Dependencies: All the static libraries are target dependencies of the framework. The framework is the only target dependency of the iOS app. For the iOS app target, within the General tab > Frameworks, Libraries & Embedded content, I've set the framework as "Do not embed" So now I have a dynamic framework which won't be copied to the .app bundle in the build output. As per my understanding, this should result in a runtime error, dyld should not be able to find the framework files as they were not embedded in the final .app bundle. But regardless, my app runs without any errors, using all the methods exposed by the framework. What is the correct understanding here? What exactly does Embed/Do not embed mean (apart from excluding the files from .app bundle) When both settings are specified, is there any priority or precedence of one setting over the other?
3
0
228
Oct ’25
I received hardly any response to my DTS ticket - What to do?
About three weeks ago I submitted a DTS ticket (13097367) to receive code level support with a potential SwiftUI bug. At first I did not receive any response at all (beside the automatic confirmation that the ticket has been created). Only after posting the question here, I got a reply from a DTS engineer. However, the proposed solution did not really solve the problem but only circumvents it (UI freezes when ScrollView reaches below SafeArea. Solution: Do not use ScrollView below SafeArea...) I pointed out, that this does not really help me. Since then I did not receive any further response. Is this normal? Is there something wrong with my ticket? Maybe it was closed by accident or something? Thank you very much!
1
0
102
Apr ’25
Apollo GraphQL Error – MultipartResponseParsingInterceptor.ParsingError.cannotParseResponse in SwiftUI
I'm integrating Apollo GraphQL into a SwiftUI app and encountering the following error during a query execution: result : failure(Apollo.MultipartResponseParsingInterceptor.ParsingError.cannotParseResponse) failed : The response data could not be parsed. The request hits the server, but the response fails to be parsed by Apollo. I'm using the default code generation setup and executing a simple query to fetch a list of countries. Here’s a snippet of the function: swift Copy Edit private func fetchCountries() { switch result { case .success(let graphQLResult): if let name = graphQLResult.data?.countries { print(name) } else if let errors = graphQLResult.errors { print(errors) } case .failure(let error): print("failed : (error.localizedDescription)") } } This is run on an iPhone 16 Pro simulator with iOS 18.2. Any idea what's causing the parsing error or how I can inspect the raw response for debugging? Thanks in advance!
1
0
90
Mar ’25
Flutter: abnormal delay on iOS in position recovery on first opening
Good morning everyone, I am developing a Flutter app for Android and iOS. When I press a button, the app detects the location of the device (obviously with permissions already granted). On Android everything works correctly. On iOS, however, when I press the button for the first time after opening the app, the location is detected after about 30-50 seconds. On the other hand, if I repeat the operation later, the response time is drastically reduced (only a few seconds). I am using the location package (https://pub.dev/packages/location), and the code to get the location is as follows: var currentLocation = await location.getLocation(); Has anyone experienced this problem before or knows how to solve it? Thank you very much! Federico
1
0
260
Sep ’25
Not seeing any recent crash reports although there should be some
For my app Find Any File, of which both releases and TestFlight betas were released many times, the TestFlight page tells me that several users have submitted crash reports. And I'm sure the same is true for the MAS releases: (Yes, this shows quite recent ones, but I've seen similar supposed crash report submits in this list before.) However, the actual "Crashes" listing on the appstoreconnect sites hasn't show any new crash reports for many months now: (This is the entirety of crash reports I can get listed, even when removing all filters.) Something appears to be stuck, on Apple's end. The same issue is with Xcode's Organanizer window, for "Crashes": It also used to list only the same very old reports and nothing since May 2024. And just now, when I retried this in Xcode, I'm shown a weird error message I never saw before: Error Downloading Crashes List An error occurred… Access Restricted with adam id: 1207815783 And yes, I'm logged in just fine, under Prefs / Accounts. How am I going to get this investigated? I had already sent an email about this to the Review team, who didn't react to it at all. DTS is only for Code level support, which this isn't. Any help?
5
0
781
Apr ’25