Post

Replies

Boosts

Views

Activity

Reply to Why does the iOS app with TLS 1.3 offer SHA-1 as signature algorithm
Hi ! I am using standard URLSession . no custom ATS settings. I can be reproduced with all fresh created apps in Xcode 15. struct ContentView: View { @StateObject var client = NetworkClient() @State var text: String var body: some View { VStack { Image(systemName: "globe") .imageScale(.large) .foregroundStyle(.tint) Text(text) }.task { do { let res = try await client.request() self.text = res } catch {} } .padding() } } class NetworkClient: ObservableObject { func request() async throws -> String { let (data, _) = try await URLSession.shared.data(for: .init(url: .init(string: "https://www.apple.com")!)) return String(data: data, encoding: .utf8) ?? "empty" } }
Oct ’23
Reply to iOS 14 CoreFoundation crash with EXC_BREAKPOINT
For details , see my attached crash log 2024-04-22_14-55-46.3894_+0200-498fa0a5137ba58fc535e918e393ed2c2efa174a.crash The interesting part is in 2 CFNetwork 0x00000001895e6c58 _BrowserCancel(__CFNetServiceBrowser*) + 120 (CFNetServiceBrowser.c:179) which can be opened here: https://opensource.apple.com/source/CFNetwork/CFNetwork-129.18/NetServices/CFNetServiceBrowser.c.auto.html /* static */ void _BrowserCancel(__CFNetServiceBrowser* browser) { CFNetServiceBrowserClientCallBack cb = NULL; CFStreamError error; void* info = NULL; // Retain here to guarantee safety really after the browser release, // but definitely before the callback. CFRetain(browser); // Lock the browser __CFSpinLock(&browser->_lock); // If the browse canceled, don't need to do any of this. if (browser->_trigger) { // Save the callback if there is one at this time. cb = browser->_callback; // Save the error and client information for the callback memmove(&error, &(browser->_error), sizeof(error)); info = browser->_client.info; // Remove the trigger from run loops and modes _CFTypeUnscheduleFromMultipleRunLoops(browser->_trigger, browser->_schedules); // Invalidate the run loop source that got here CFRunLoopSourceInvalidate((CFRunLoopSourceRef)(browser->_trigger)); // Release the trigger now. CFRelease(browser->_trigger); browser->_trigger = NULL; } // Unlock the browser so the callback can be made safely. __CFSpinUnlock(&browser->_lock); // If there is a callback, inform the client of the finish. if (cb) cb((CFNetServiceBrowserRef)browser, 0, NULL, &error, info); // Go ahead and release now that the callback is done. CFRelease(browser); } the CFRunLoopSourceInvalidate causes the crash? There is a lock. But might be not correct?
Topic: App & System Services SubTopic: General Tags:
May ’24
Reply to SwiftUI List rows loaded all at once
sure. see the sample here. BuildingView will load all rows (i.e. 1000 instead of 17) struct ContentView: View { @StateObject var store = Store() var body: some View { TabView { // Correct houses.tabItem { Label("Houses", systemImage: "house") } // Wrong? buildings.tabItem { Label("Building", systemImage: "building") } } } var houses: some View { List { ForEach(store.houses) {house in HouseView(house: house) } } } var buildings: some View { List { ForEach(store.buildings) {building in BuildingView(building: building) } } } } struct HouseView: View { let house: House var body: some View { print(house.title) // Only visible will get loaded return Text(house.title) } } struct BuildingView: View { let building: Building var body: some View { print(building.index) // loads all available items return content } @ViewBuilder var content: some View { switch building.kind { case .condo: Text("Condo \(building.index)") case .house: Text("House \(building.index)") case .warehouse: Text("Warehouse \(building.index)") } } }
Topic: UI Frameworks SubTopic: SwiftUI Tags:
Aug ’24