# objective-c

Published articles for objective-c.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Codebase Exploration with AI \[SUBSCRIBER\]

DevFeed: [Codebase Exploration with AI \[SUBSCRIBER\]](<https://devfeed.tech/articles/codebase-exploration-with-ai-subscriber-91867.md>)

Original publisher: [Read original article](<https://www.kodeco.com/ios/paths/ai-assisted-ios-dev/53684539-codebase-exploration-with-ai>)

Author: ifeli

Published: 2026-10-21T00:00:00Z

Content type: tutorial

Language: en

Sources: [Kodeco](<https://devfeed.tech/sources/kodeco-high-quality-programming-tutorials-ios-android-swift-kotlin-unity-and-more.md>)

Topics: [Legacy Modernization](<https://devfeed.tech/topics/legacy-modernization.md>), [Objective-C](<https://devfeed.tech/topics/objective-c.md>), [Tech Debt](<https://devfeed.tech/topics/tech-debt.md>), [Learning](<https://devfeed.tech/topics/learning.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [dependencies](<https://devfeed.tech/tags/dependencies.md>), [exploration](<https://devfeed.tech/tags/exploration.md>), [feature](<https://devfeed.tech/tags/feature.md>), [human-in-the-loop](<https://devfeed.tech/tags/human-in-the-loop.md>), [independent](<https://devfeed.tech/tags/independent.md>), [ios](<https://devfeed.tech/tags/ios.md>), [modernization](<https://devfeed.tech/tags/modernization.md>), [multimodal-module](<https://devfeed.tech/tags/multimodal-module.md>), [objective-c](<https://devfeed.tech/tags/objective-c.md>), [risks](<https://devfeed.tech/tags/risks.md>), [subscriber](<https://devfeed.tech/tags/subscriber.md>), [swift](<https://devfeed.tech/tags/swift.md>), [swiftui](<https://devfeed.tech/tags/swiftui.md>), [technical-debt](<https://devfeed.tech/tags/technical-debt.md>), [testing](<https://devfeed.tech/tags/testing.md>), [uikit](<https://devfeed.tech/tags/uikit.md>)

### AI overview

Explore an unfamiliar iOS codebase with focused AI questions, then verify proposed codebase maps and technical-debt findings against the source. The module emphasizes evaluating debt without treating age, Objective-C, or UIKit as problems by themselves; planning incremental Objective-C-to-Swift and UIKit-to-SwiftUI modernization without rewriting the app; and preparing for a feature change by tracing dependencies, risks, testing gaps, and open questions. AI assists exploration and review, while people verify findings and make decisions.

### Source excerpt

Explore an unfamiliar legacy iOS codebase with AI without treating its answers as authoritative. You will verify a codebase map and technical-debt findings against the source, create a high-level Objective-C-to-Swift and UIKit-to-SwiftUI modernization plan, and investigate whether the app is ready for a safe feature change.

## MacSync info-stealing malware hides malicious commands in an iCloud calendar

DevFeed: [MacSync info-stealing malware hides malicious commands in an iCloud calendar](<https://devfeed.tech/articles/macsync-info-stealing-malware-hides-malicious-commands-in-an-icloud-calendar-59882.md>)

Original publisher: [Read original article](<https://www.helpnetsecurity.com/2026/09/25/macsync-info-stealing-malware-for-macos/>)

Author: Sinisa Markovic

Published: 2026-09-25T09:22:45Z

Content type: news

Language: en

Sources: [Help Net Security](<https://devfeed.tech/sources/help-net-security.md>)

Topics: [Malware](<https://devfeed.tech/topics/malware.md>), [Security](<https://devfeed.tech/topics/security.md>), [backdoor](<https://devfeed.tech/topics/backdoor.md>), [Shell](<https://devfeed.tech/topics/shell.md>), [file](<https://devfeed.tech/topics/file.md>), [Objective-C](<https://devfeed.tech/topics/objective-c.md>), [Swift](<https://devfeed.tech/topics/swift.md>), [Server](<https://devfeed.tech/topics/server.md>)

Tags: [2026](<https://devfeed.tech/tags/2026.md>), [apple](<https://devfeed.tech/tags/apple.md>), [backdoor](<https://devfeed.tech/tags/backdoor.md>), [clickfix](<https://devfeed.tech/tags/clickfix.md>), [credentials](<https://devfeed.tech/tags/credentials.md>), [crypto](<https://devfeed.tech/tags/crypto.md>), [data](<https://devfeed.tech/tags/data.md>), [files](<https://devfeed.tech/tags/files.md>), [kaspersky](<https://devfeed.tech/tags/kaspersky.md>), [mac](<https://devfeed.tech/tags/mac.md>), [macos](<https://devfeed.tech/tags/macos.md>), [malware](<https://devfeed.tech/tags/malware.md>), [news](<https://devfeed.tech/tags/news.md>), [objective-c](<https://devfeed.tech/tags/objective-c.md>), [september-2026](<https://devfeed.tech/tags/september-2026.md>), [server](<https://devfeed.tech/tags/server.md>), [shell](<https://devfeed.tech/tags/shell.md>), [swift](<https://devfeed.tech/tags/swift.md>), [telegram](<https://devfeed.tech/tags/telegram.md>), [x](<https://devfeed.tech/tags/x.md>), [zsh](<https://devfeed.tech/tags/zsh.md>)

### AI overview

A MacSync malware variant for macOS uses a more complex infection chain involving binary droppers and loaders. In one campaign, malicious commands were hidden in a public iCloud calendar and used to download additional payloads. The malware targets credentials, cryptocurrency wallet data, and files.

### Source excerpt

A new MacSync variant targets Mac users with an infostealer and persistent backdoor designed to steal credentials, crypto wallet data, and files, according to Kaspersky. Researchers found the malware spreading through a crypto wallet app called Toria, which had its own website and was promoted on X and Telegram. MacSync is a family of Mac malware that emerged in 2025 as Mac.c and was later renamed. Early versions used AppleScripts that closely resembled the AMOS ... More -> The post MacSync info-stealing malware hides malicious commands in an iCloud calendar appeared first on Help Net Security.

## MacSync under the microscope: new delivery methods and a new payload

DevFeed: [MacSync under the microscope: new delivery methods and a new payload](<https://devfeed.tech/articles/macsync-under-the-microscope-new-delivery-methods-and-a-new-payload-59229.md>)

Original publisher: [Read original article](<https://securelist.com/macsync-new-version/121383/>)

Author: Sergey Puzan

Published: 2026-09-24T10:00:21Z

Content type: article

Language: en

Sources: [Securelist](<https://devfeed.tech/sources/securelist.md>)

Topics: [Malware](<https://devfeed.tech/topics/malware.md>), [macOS](<https://devfeed.tech/topics/macos.md>), [backdoor](<https://devfeed.tech/topics/backdoor.md>), [Social engineering](<https://devfeed.tech/topics/social-engineering.md>), [ClickFix](<https://devfeed.tech/topics/clickfix.md>), [Objective-C](<https://devfeed.tech/topics/objective-c.md>), [Swift](<https://devfeed.tech/topics/swift.md>), [Script](<https://devfeed.tech/topics/script.md>), [Shell](<https://devfeed.tech/topics/shell.md>)

Tags: [apple-macos](<https://devfeed.tech/tags/apple-macos.md>), [backdoor](<https://devfeed.tech/tags/backdoor.md>), [clickfix](<https://devfeed.tech/tags/clickfix.md>), [cryptocurrencies](<https://devfeed.tech/tags/cryptocurrencies.md>), [full](<https://devfeed.tech/tags/full.md>), [infostealers](<https://devfeed.tech/tags/infostealers.md>), [large](<https://devfeed.tech/tags/large.md>), [macos](<https://devfeed.tech/tags/macos.md>), [macsync](<https://devfeed.tech/tags/macsync.md>), [malware](<https://devfeed.tech/tags/malware.md>), [malware-descriptions](<https://devfeed.tech/tags/malware-descriptions.md>), [malware-technologies](<https://devfeed.tech/tags/malware-technologies.md>), [medium](<https://devfeed.tech/tags/medium.md>), [objective-c](<https://devfeed.tech/tags/objective-c.md>), [script](<https://devfeed.tech/tags/script.md>), [shell](<https://devfeed.tech/tags/shell.md>), [social-engineering](<https://devfeed.tech/tags/social-engineering.md>), [swift](<https://devfeed.tech/tags/swift.md>), [thumbnail](<https://devfeed.tech/tags/thumbnail.md>), [trojan](<https://devfeed.tech/tags/trojan.md>), [trojan-stealer](<https://devfeed.tech/tags/trojan-stealer.md>), [unix-and-macos-malware](<https://devfeed.tech/tags/unix-and-macos-malware.md>)

### AI overview

This report examines a new MacSync macOS infostealer infection chain observed in September 2026. It describes a shift from script-based droppers to binary payload delivery, malware modules written in Objective-C and Swift, and the use of iCloud during infection. MacSync is distributed through malware-as-a-service, social engineering, fake applications, and ClickFix-style attacks.

### Source excerpt

We look at a new version of the MacSync macOS stealer with a backdoor module that targets crypto enthusiasts and developers.

## Swift 6 Gave Me Zero Warnings, but Two Objective-C Callbacks Still Crashed at Runtime

DevFeed: [Swift 6 Gave Me Zero Warnings, but Two Objective-C Callbacks Still Crashed at Runtime](<https://devfeed.tech/articles/swift-6-gave-me-zero-warnings-but-two-objective-c-callbacks-still-crashed-at-runtime-58017.md>)

Original publisher: [Read original article](<https://hackernoon.com/swift-6-gave-me-zero-warnings-but-two-objective-c-callbacks-still-crashed-at-runtime?source=rss>)

Author: Amana

Published: 2026-09-22T14:42:08Z

Content type: article

Language: en

Sources: [HackerNoon](<https://devfeed.tech/sources/hackernoon.md>)

Topics: [Swift](<https://devfeed.tech/topics/swift.md>), [Actor](<https://devfeed.tech/topics/actor.md>), [Objective-C](<https://devfeed.tech/topics/objective-c.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Xcode](<https://devfeed.tech/topics/xcode.md>), [Closure](<https://devfeed.tech/topics/closure.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [actor](<https://devfeed.tech/tags/actor.md>), [amana](<https://devfeed.tech/tags/amana.md>), [apple](<https://devfeed.tech/tags/apple.md>), [bgtaskscheduler](<https://devfeed.tech/tags/bgtaskscheduler.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [crashes](<https://devfeed.tech/tags/crashes.md>), [dynamic-actor-isolation](<https://devfeed.tech/tags/dynamic-actor-isolation.md>), [ios](<https://devfeed.tech/tags/ios.md>), [ios-development](<https://devfeed.tech/tags/ios-development.md>), [isolation](<https://devfeed.tech/tags/isolation.md>), [objective-c](<https://devfeed.tech/tags/objective-c.md>), [shipaton](<https://devfeed.tech/tags/shipaton.md>), [swift](<https://devfeed.tech/tags/swift.md>), [swift-6](<https://devfeed.tech/tags/swift-6.md>), [swift-concurrency](<https://devfeed.tech/tags/swift-concurrency.md>)

### AI overview

The article examines two runtime crashes caused by Swift 6 actor isolation interacting with Objective-C callbacks from BGTaskScheduler and PhotoKit. It explains why the compiler produced no warnings, how queue and isolation mismatches caused the crashes, and how the fixes were reproduced and validated.

### Source excerpt

How two Objective-C callbacks triggered Swift 6 actor-isolation crashes despite zero compiler warnings, and how the bugs were reproduced and fixed.

## GSoC 2026: Extending Clang API Notes for C++: Overload-Specific Annotations for Functions and Methods

DevFeed: [GSoC 2026: Extending Clang API Notes for C++: Overload-Specific Annotations for Functions and Methods](<https://devfeed.tech/articles/gsoc-2026-extending-clang-api-notes-for-c-overload-specific-annotations-for-functions-and-methods-43127.md>)

Original publisher: [Read original article](<https://blog.llvm.org/posts/2026-08-21-gsoc-clang-api-notes-overloads/>)

Author: Dominic Stöcker

Published: 2026-09-14T00:00:00Z

Content type: article

Language: en

Sources: [LLVM Project](<https://devfeed.tech/sources/the-llvm-project-blog.md>)

Topics: [clang](<https://devfeed.tech/topics/clang.md>), [C++](<https://devfeed.tech/topics/c-plus-plus.md>), [API](<https://devfeed.tech/topics/api.md>), [interoperability](<https://devfeed.tech/topics/interoperability.md>), [Swift](<https://devfeed.tech/topics/swift.md>), [YAML](<https://devfeed.tech/topics/yaml.md>), [Parsing](<https://devfeed.tech/topics/parsing.md>), [selectors](<https://devfeed.tech/topics/selectors.md>), [function](<https://devfeed.tech/topics/function.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [api-notes](<https://devfeed.tech/tags/api-notes.md>), [apis](<https://devfeed.tech/tags/apis.md>), [c](<https://devfeed.tech/tags/c.md>), [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [clang](<https://devfeed.tech/tags/clang.md>), [gsoc](<https://devfeed.tech/tags/gsoc.md>), [objective-c](<https://devfeed.tech/tags/objective-c.md>), [parsing](<https://devfeed.tech/tags/parsing.md>), [selectors](<https://devfeed.tech/tags/selectors.md>), [swift](<https://devfeed.tech/tags/swift.md>), [yaml](<https://devfeed.tech/tags/yaml.md>)

### AI overview

A Google Summer of Code 2026 project extended Clang API Notes to support annotations for individual overloaded C++ functions and methods. The work introduced YAML-based overload selectors and covered parsing, serialization, declaration lookup, semantic analysis, type normalization, diagnostics, and Swift interoperability.

### Source excerpt

Hi! I'm Dominic Stöcker, and during Google Summer of Code 2026 I worked on extending Clang API Notes for C++ with overload-specific annotations for functions and methods. My mentors were Gábor Horváth, John Hui, and Egor Zhdan. This project was originally accepted as a small, 8-week project. As the implementation scope grew, it was expanded to a large, 12-week project. I was interested in this project because it connects Clang's semantic analysis with Swift interoperability. What made the project especially interesting to me was that a concise user-facing YAML extension had to be connected to Clang's internal model of declarations, types, overloads, and source-level type spelling. The goal of the project was to let API Notes target individual C++ function and method overloads. The work covered the public YAML design, parsing, binary serialization, declaration lookup, Sema integration, type normalization, diagnostics, and member-function object qualifiers. Background API Notes allow additional information to be attached to declarations without modifying their original source headers. They are used in particular to refine how C, Objective-C, and C++ APIs are exposed to Swift. Previously, an API Notes entry could identify a C++ function or method primarily by name. This is not sufficient when several overloads share that name: struct Widget { void setValue(int); void setValue(double);}; A name-only entry for setValue applies to the whole overload set, so it cannot assign different annotations to setValue(int) and setValue(double). The main challenge was therefore not only to select individual overloads, but to do so without changing the behavior of existing name-only API Notes files. Selecting C++ Overloads API Notes are structured according to the kind of declaration they apply to, like Functions, Tags, and Methods. The C++ overload selectors I designed for my project extend the Functions and Methods schemas with an optional Where block that narrows a name-based looku

## WWDC 2026 Viewing Guide

DevFeed: [WWDC 2026 Viewing Guide](<https://devfeed.tech/articles/wwdc-2026-viewing-guide-21089.md>)

Original publisher: [Read original article](<https://useyourloaf.com/blog/wwdc-2026-viewing-guide/>)

Author: Keith Harrison

Published: 2026-06-15T09:16:45Z

Content type: tutorial

Language: en

Sources: [K. Harrison](<https://devfeed.tech/sources/k-harrison.md>)

Topics: [Swift](<https://devfeed.tech/topics/swift.md>), [SwiftUI](<https://devfeed.tech/topics/swiftui.md>), [Xcode](<https://devfeed.tech/topics/xcode.md>), [WebAssembly](<https://devfeed.tech/topics/web-assembly.md>), [gRPC](<https://devfeed.tech/topics/grpc.md>), [MLX](<https://devfeed.tech/topics/mlx.md>), [NumPy](<https://devfeed.tech/topics/numpy.md>), [Software Testing](<https://devfeed.tech/topics/software-testing.md>)

Tags: [2026](<https://devfeed.tech/tags/2026.md>), [apple](<https://devfeed.tech/tags/apple.md>), [auto-layout](<https://devfeed.tech/tags/auto-layout.md>), [comparison](<https://devfeed.tech/tags/comparison.md>), [ios](<https://devfeed.tech/tags/ios.md>), [ios27](<https://devfeed.tech/tags/ios27.md>), [macos27](<https://devfeed.tech/tags/macos27.md>), [objective-c](<https://devfeed.tech/tags/objective-c.md>), [swift](<https://devfeed.tech/tags/swift.md>), [swiftui](<https://devfeed.tech/tags/swiftui.md>), [webassembly](<https://devfeed.tech/tags/webassembly.md>), [wwdc](<https://devfeed.tech/tags/wwdc.md>), [xcode](<https://devfeed.tech/tags/xcode.md>)

### AI overview

A guide to planning and watching WWDC 2026 sessions, highlighting platform themes and selected updates in Swift, SwiftUI, Xcode, WebAssembly, gRPC, and MLX.

### Source excerpt

My WWDC 2026 viewing guide to help you plan the sessions you want to watch. Where Do I Start? The two big themes for the year are again Liquid Glass and Apple Intelligence. Start by watching the Platforms State of the Union (SOTU) for a summary of what's new this year. If you only have five minutes try the SOTU recap. You don't have to learn everything new today! There are over 100 sessions and a lot of new stuff to learn. You may feel like you're getting left behind. Don't let it overwhelm you. You've got time. Don't burn yourself out trying to keep up. Watching The Sessions I watch the videos using the Apple Developer app. It's available on macOS and iOS. The video player supports from 0.5x to 2x playback, most videos have transcripts and summaries, and allow copying of the onscreen sample code. You can also watch on YouTube. There are a lot of sessions, but many are short (15-20 minutes). There's no padding and Apple's engineers get to the point quickly. Swift Swift 6.4 is here with some quality of life improvements: What's new in Swift Condense long @available attributes with anyAppleOS, @diagnose to control compiler deprecation warnings. Double-colon module selector. Standard Library task cancellation shield, dictionary mapKeyedValues, new FilePath type. XCTest interop with Swift Testing. Subprocess 1.0. New ProgressManager. @C attribute for Swift-C interop. Compile to WebAssembly. New @inline(always) and @specialized attributes. Iterable protocol for noncopyable elements. Build real-time apps and services with gRPC and Swift gRPC Swift package to generate and deploy network code for remote procedure call services. Explore numerical computing in Swift with MLX NumPy-like API. Examples of computing the Mandlebrot set, heat distribution, and curve fitting. SwiftUI Liquid Glass changes and some welcome improvements: What's new in SwiftUI Liquid Glass is now mandatory. Minimal menu icons by default. Resize live previews in Xcode. Prominent tab role. Toolbar visibil

## The Future of KMP's iOS Interop - Daniel Bertoldi

DevFeed: [The Future of KMP's iOS Interop - Daniel Bertoldi](<https://devfeed.tech/articles/the-future-of-kmp-s-ios-interop-daniel-bertoldi-38329.md>)

Original publisher: [Read original article](<https://touchlab.co/the-future-of-kmps-ios-interop>)

Published: 2026-06-12T00:00:00Z

Content type: comparison

Language: en

Sources: [Touchlab](<https://devfeed.tech/sources/touchlab-enterprise-mobile-innovation-development.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Swift](<https://devfeed.tech/topics/swift.md>), [Objective-C](<https://devfeed.tech/topics/objective-c.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>)

Tags: [compare](<https://devfeed.tech/tags/compare.md>), [experimental](<https://devfeed.tech/tags/experimental.md>), [interop](<https://devfeed.tech/tags/interop.md>), [ios](<https://devfeed.tech/tags/ios.md>), [kmp](<https://devfeed.tech/tags/kmp.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [native](<https://devfeed.tech/tags/native.md>), [objective-c](<https://devfeed.tech/tags/objective-c.md>), [production](<https://devfeed.tech/tags/production.md>), [skie](<https://devfeed.tech/tags/skie.md>), [swift](<https://devfeed.tech/tags/swift.md>), [swift-export](<https://devfeed.tech/tags/swift-export.md>)

### AI overview

This comparison examines Kotlin Multiplatform iOS interoperability through Kotlin's experimental Swift Export and the Objective-C bridge enhanced by SKIE. It compares their generated output, capabilities, limitations, and tradeoffs.

### Source excerpt

Kotlin's new Swift Export feature promises to eliminate the Objective-C middleman and generate native Swift APIs directly from your KMP code. But with SKIE already solving many of the same pain points in production today, which approach should your team bet on? We break down the capabilities, limitations, and tradeoffs of both.

## XcodeGen and the quest to modularize the Wealthfront iOS app

DevFeed: [XcodeGen and the quest to modularize the Wealthfront iOS app](<https://devfeed.tech/articles/xcodegen-and-the-quest-to-modularize-the-wealthfront-ios-app-20461.md>)

Original publisher: [Read original article](<https://eng.wealthfront.com/2026/03/02/xcodegen-and-the-quest-to-modularize-the-wealthfront-ios-app/>)

Author: Matthew Bommer

Published: 2026-03-02T17:56:41Z

Content type: article

Language: en

Sources: [Wealthfront](<https://devfeed.tech/sources/wealthfront.md>)

Topics: [XcodeGen](<https://devfeed.tech/topics/xcodegen.md>), [Code Modularity](<https://devfeed.tech/topics/code-modularity.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [software-development](<https://devfeed.tech/topics/software-development.md>), [Swift](<https://devfeed.tech/topics/swift.md>)

Tags: [app](<https://devfeed.tech/tags/app.md>), [automation](<https://devfeed.tech/tags/automation.md>), [build-times](<https://devfeed.tech/tags/build-times.md>), [careers](<https://devfeed.tech/tags/careers.md>), [code-review](<https://devfeed.tech/tags/code-review.md>), [command-line](<https://devfeed.tech/tags/command-line.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [declarative](<https://devfeed.tech/tags/declarative.md>), [dependencies](<https://devfeed.tech/tags/dependencies.md>), [files](<https://devfeed.tech/tags/files.md>), [framework](<https://devfeed.tech/tags/framework.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [ios](<https://devfeed.tech/tags/ios.md>), [modularization](<https://devfeed.tech/tags/modularization.md>), [monolith](<https://devfeed.tech/tags/monolith.md>), [objective-c](<https://devfeed.tech/tags/objective-c.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [ownership](<https://devfeed.tech/tags/ownership.md>), [swift](<https://devfeed.tech/tags/swift.md>), [target](<https://devfeed.tech/tags/target.md>), [wealthfront-engineering](<https://devfeed.tech/tags/wealthfront-engineering.md>), [xcodegen](<https://devfeed.tech/tags/xcodegen.md>)

### AI overview

Wealthfront's large iOS app faced project-file merge conflicts, hard-to-review build configuration, and difficulty modularizing development across 15 engineers and seven squads. The excerpt describes adopting XcodeGen, an open-source command-line tool that generates Xcode project files from declarative YAML specifying targets, schemes, dependencies, and build settings. Automatic source discovery means files added under declared source paths need no project-file edits; configuration can also be split across YAML files. The excerpt says XcodeGen addressed the first two problems and was intended to support later modularization, but does not provide the full implementation or results.

### Source excerpt

Every iOS application starts as a monolith. Xcode's default project structure places all source files, resources, and build configuration into a single module (or target, for all the iOS devs reading this). For small apps, this works fine. For a 10+ year old financial application with roughly 2,000 Swift and a handful of Objective-C files,... Read more

## Android Security: mobsfscan

DevFeed: [Android Security: mobsfscan](<https://devfeed.tech/articles/android-security-mobsfscan-27032.md>)

Original publisher: [Read original article](<https://blog.stackademic.com/android-security-mobsfscan-7cd9f52e19a0?source=rss-be40b368c57e------2>)

Author: Matthew Dolan

Published: 2026-01-16T17:51:35Z

Content type: tutorial

Language: en

Sources: [Matthew Dolan](<https://devfeed.tech/sources/stories-by-matthew-dolan-on-medium.md>)

Topics: [Static code analysis](<https://devfeed.tech/topics/static-code-analysis.md>), [Android Security](<https://devfeed.tech/topics/android-security.md>), [GitHub](<https://devfeed.tech/topics/github.md>), [Security](<https://devfeed.tech/topics/security.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [android-security](<https://devfeed.tech/tags/android-security.md>), [androiddev](<https://devfeed.tech/tags/androiddev.md>), [build-secure-apps](<https://devfeed.tech/tags/build-secure-apps.md>), [code-analysis](<https://devfeed.tech/tags/code-analysis.md>), [codeql](<https://devfeed.tech/tags/codeql.md>), [docker](<https://devfeed.tech/tags/docker.md>), [free-and-open-source](<https://devfeed.tech/tags/free-and-open-source.md>), [github](<https://devfeed.tech/tags/github.md>), [github-actions](<https://devfeed.tech/tags/github-actions.md>), [java](<https://devfeed.tech/tags/java.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [mobile-security](<https://devfeed.tech/tags/mobile-security.md>), [objective-c](<https://devfeed.tech/tags/objective-c.md>), [pip](<https://devfeed.tech/tags/pip.md>), [python](<https://devfeed.tech/tags/python.md>), [sarif](<https://devfeed.tech/tags/sarif.md>), [security](<https://devfeed.tech/tags/security.md>), [security-framework](<https://devfeed.tech/tags/security-framework.md>), [static-analysis](<https://devfeed.tech/tags/static-analysis.md>), [swift](<https://devfeed.tech/tags/swift.md>)

### AI overview

mobsfscan is a free, open-source static analysis tool that checks Java, Kotlin, Swift, and Objective-C code for insecure patterns using Mobile Security Framework rules with semgrep and libsast matchers. The excerpt focuses on running it in GitHub Actions and sending findings to GitHub's Security tab: configure output in SARIF format, then upload it with the github/codeql-action/upload-sarif action. It notes other setup options, including pip and Docker, but does not provide their steps or further configuration details.

### Source excerpt

Not a medium member? "Read for free" Continue reading on Stackademic "

## Last article of 2025 - A Directional Update

DevFeed: [Last article of 2025 - A Directional Update](<https://devfeed.tech/articles/last-article-of-2025-a-directional-update-35016.md>)

Original publisher: [Read original article](<https://read.theaimerge.com/p/last-article-of-2025-a-directional>)

Author: Alex Razvant

Published: 2025-12-27T14:35:36Z

Content type: article

Language: en

Sources: [Neural Bits](<https://devfeed.tech/sources/neural-bits.md>)

Topics: [AI Development](<https://devfeed.tech/topics/ai-development.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Machine learning](<https://devfeed.tech/topics/machine-learning.md>), [Computer vision](<https://devfeed.tech/topics/computer-vision.md>), [Code](<https://devfeed.tech/topics/code.md>), [C](<https://devfeed.tech/topics/c.md>), [C++](<https://devfeed.tech/topics/c-plus-plus.md>), [Python](<https://devfeed.tech/topics/python.md>), [Objective-C](<https://devfeed.tech/topics/objective-c.md>), [Swift](<https://devfeed.tech/topics/swift.md>), [iOS](<https://devfeed.tech/topics/ios.md>)

Tags: [2025](<https://devfeed.tech/tags/2025.md>), [ai](<https://devfeed.tech/tags/ai.md>), [applications](<https://devfeed.tech/tags/applications.md>), [article](<https://devfeed.tech/tags/article.md>), [asus](<https://devfeed.tech/tags/asus.md>), [building-ai-systems](<https://devfeed.tech/tags/building-ai-systems.md>), [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [code](<https://devfeed.tech/tags/code.md>), [computer-vision](<https://devfeed.tech/tags/computer-vision.md>), [ios](<https://devfeed.tech/tags/ios.md>), [mac](<https://devfeed.tech/tags/mac.md>), [objective-c](<https://devfeed.tech/tags/objective-c.md>), [python](<https://devfeed.tech/tags/python.md>), [swift](<https://devfeed.tech/tags/swift.md>), [update](<https://devfeed.tech/tags/update.md>)

### AI overview

An end-of-year reflection on how the author's newsletter will change in 2026. The author connects early work and study choices with a gradual move into programming, AI, machine learning, and building AI systems, emphasizing that direction mattered more than speed.

### Source excerpt

Reflecting on 2025, and how this newsletter is changing going into 2026

## Format Swift with a Git Commit Hook

DevFeed: [Format Swift with a Git Commit Hook](<https://devfeed.tech/articles/format-swift-with-a-git-commit-hook-21085.md>)

Original publisher: [Read original article](<https://useyourloaf.com/blog/format-swift-with-a-git-commit-hook/>)

Author: Keith Harrison

Published: 2025-11-24T10:29:58Z

Content type: tutorial

Language: en

Sources: [K. Harrison](<https://devfeed.tech/sources/k-harrison.md>)

Topics: [Swift](<https://devfeed.tech/topics/swift.md>), [Git](<https://devfeed.tech/topics/git.md>), [hooks](<https://devfeed.tech/topics/hooks.md>), [software-development](<https://devfeed.tech/topics/software-development.md>)

Tags: [actions](<https://devfeed.tech/tags/actions.md>), [auto-layout](<https://devfeed.tech/tags/auto-layout.md>), [automatically](<https://devfeed.tech/tags/automatically.md>), [changes](<https://devfeed.tech/tags/changes.md>), [code](<https://devfeed.tech/tags/code.md>), [code-style](<https://devfeed.tech/tags/code-style.md>), [commit](<https://devfeed.tech/tags/commit.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [configure](<https://devfeed.tech/tags/configure.md>), [custom](<https://devfeed.tech/tags/custom.md>), [directory](<https://devfeed.tech/tags/directory.md>), [dump](<https://devfeed.tech/tags/dump.md>), [external](<https://devfeed.tech/tags/external.md>), [file](<https://devfeed.tech/tags/file.md>), [files](<https://devfeed.tech/tags/files.md>), [format](<https://devfeed.tech/tags/format.md>), [formatting](<https://devfeed.tech/tags/formatting.md>), [git](<https://devfeed.tech/tags/git.md>), [git-commit](<https://devfeed.tech/tags/git-commit.md>), [ios](<https://devfeed.tech/tags/ios.md>), [objective-c](<https://devfeed.tech/tags/objective-c.md>), [swift](<https://devfeed.tech/tags/swift.md>), [with](<https://devfeed.tech/tags/with.md>), [wwdc](<https://devfeed.tech/tags/wwdc.md>), [xcode](<https://devfeed.tech/tags/xcode.md>), [xcode-16](<https://devfeed.tech/tags/xcode-16.md>)

### AI overview

Xcode 16 includes `swift-format`; it runs from the active Xcode toolchain, which may be a beta or release. Formatting can use a `.swift-format` file found beside the source files or in a parent directory, falling back to defaults; a project-level file can override a shared configuration. The described pre-commit hook selects staged Swift files with Git's cached diff, formats them in place, and stages the changed files again. A nonzero exit cancels the commit. Because it is a client-side hook, it must be installed for each new or cloned repository. The excerpt notes that the hook can be bypassed with a flag but does not show which flag or the complete script.

### Source excerpt

How do you automatically format your Swift code every time you commit it to your Git repository? Swift Format There are several Swift formatting tools. Xcode 16 shipped with swift-format included in the toolchain: $ xcrun --find swift-format /Applications/Xcode.app/Contents/Developer/Toolchains/ XcodeDefault.xctoolchain/usr/bin/swift-format To run the formatter: $ swift format MyFile.swift Note: This runs the swift-format bundled with the active Xcode development directory (beta or release). Configuring swift-format The Xcode settings let you configure various formatting options including indentation but I prefer to use an external configuration file for swift-format. By default, swift-format looks for a configuration file named .swift-format in the same directory as the files you are formatting. If there isn't one it looks in each successive parent directory. If it doesn't find a configuration file it uses a default configuration. You can dump the default configuration to get started: $ swift format dump-configuration > swift-format Modify the configuration file to meet your own code style: { "fileScopedDeclarationPrivacy" : { "accessLevel" : "private" }, "indentConditionalCompilationBlocks" : true, "indentSwitchCaseLabels" : false, "indentation" : { ... I keep my default configuration file in my base Developer directory: $ mv swift-format ~\Developer\.swift-format When needed, I can override the defaults by placing a modified configuration file in the project-specific root directory. Note: Don't forget to prefix the configuration file with a . Git Commit Hooks Git Hooks are a way to run custom scripts when different Git actions occur. A pre-commit hook runs when you commit changes to a repository. Here's the pre-commit script I'm using to run swift-format: #!/bin/bash GIT=/usr/bin/git GREP=/usr/bin/grep SWIFT=/usr/bin/swift # Staged (cached) added/copied/modified/renamed files FILES=$($GIT diff --cached --name-only --diff-filter=ACMR | $GREP '\.swift$') # Exit ear

## SwiftUI Custom URL Schemes

DevFeed: [SwiftUI Custom URL Schemes](<https://devfeed.tech/articles/swiftui-custom-url-schemes-21088.md>)

Original publisher: [Read original article](<https://useyourloaf.com/blog/swiftui-custom-url-schemes/>)

Author: Keith Harrison

Published: 2025-10-27T11:26:47Z

Content type: tutorial

Language: en

Sources: [K. Harrison](<https://devfeed.tech/sources/k-harrison.md>)

Topics: [SwiftUI](<https://devfeed.tech/topics/swiftui.md>), [in-app-browsers](<https://devfeed.tech/topics/in-app-browsers.md>)

Tags: [apis](<https://devfeed.tech/tags/apis.md>), [app](<https://devfeed.tech/tags/app.md>), [apple](<https://devfeed.tech/tags/apple.md>), [async](<https://devfeed.tech/tags/async.md>), [auto-layout](<https://devfeed.tech/tags/auto-layout.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [custom](<https://devfeed.tech/tags/custom.md>), [data](<https://devfeed.tech/tags/data.md>), [display](<https://devfeed.tech/tags/display.md>), [error](<https://devfeed.tech/tags/error.md>), [extension](<https://devfeed.tech/tags/extension.md>), [file](<https://devfeed.tech/tags/file.md>), [format](<https://devfeed.tech/tags/format.md>), [functionality](<https://devfeed.tech/tags/functionality.md>), [handler](<https://devfeed.tech/tags/handler.md>), [html](<https://devfeed.tech/tags/html.md>), [ios](<https://devfeed.tech/tags/ios.md>), [ios-26](<https://devfeed.tech/tags/ios-26.md>), [load](<https://devfeed.tech/tags/load.md>), [objective-c](<https://devfeed.tech/tags/objective-c.md>), [swift](<https://devfeed.tech/tags/swift.md>), [swiftui](<https://devfeed.tech/tags/swiftui.md>), [url](<https://devfeed.tech/tags/url.md>), [webview](<https://devfeed.tech/tags/webview.md>), [wwdc](<https://devfeed.tech/tags/wwdc.md>), [xcode](<https://devfeed.tech/tags/xcode.md>)

### AI overview

The excerpt describes loading local App bundle resources in SwiftUI WebViews with a custom URL scheme on iOS 26. Implement a URLSchemeHandler that validates the request URL and scheme, derives a filename from the URL hostname, finds the file in the main App bundle, determines its MIME type from the extension, and returns a URLResponse with the data through an async sequence. Errors are thrown through the sequence. Register the handler in a WebPage configuration, then load and display the page with WebView; WebPage's load method also returns an async sequence that can track progress. The excerpt does not include the complete implementation or the final display details.

### Source excerpt

Create a custom URL scheme handler for SwiftUI WebViews. Custom URL schemes Apple introduced both WebView and WebPage SwiftUI views in iOS 26. These provide similar WebKit functionality to the UIKit WKWebView APIs. This includes being able to register custom URL schemes to load local resources. Suppose I have an App that loads quotations from the local App bundle. My URL scheme uses the format: quotes://001.html There are a few steps to support a custom URL scheme: Create a custom URL scheme handler that knows how to load the local resources. Register the scheme handler in a WebPage configuration. Have the WebView load and display the web page. Let's look at each of those steps. URLSchemeHandler (iOS 26) The URLSchemeHandler is a protocol with a reply method to return an async sequence of results. The AsyncSequence expects us to either yield a URLResponse and some data or throw an error. struct QuoteSchemeHandler: URLSchemeHandler { static let scheme = "quotes" func reply(for request: URLRequest) -> some AsyncSequence< URLSchemeTaskResult, any Error > { AsyncThrowingStream { continuation in ... } } } The reply method provides us with the URLRequest. I start by extracting the URL and checking it matches our quotes scheme: guard let url = request.url else { continuation.finish(throwing: QuoteError.missingURL) return } guard url.scheme == QuoteSchemeHandler.scheme else { continuation.finish(throwing: QuoteError.invalidScheme) return } To construct the URL response I need the mime type and length of the data. I first extract the filename from the URL, determine the mime type from the file extension, and then load the data: do { let file = try filename(for: url) let mimeType = try mimeType(for: file) let data = try Data(contentsOf: file) I can then build the URLResponse: let response = URLResponse( url: url, mimeType: mimeType, expectedContentLength: data.count, textEncodingName: "utf-8" ) If nothing has gone wrong I then add the response and the data to the AsyncSequenc

## GSoC 2025: Usability Improvements for the Undefined Behavior Sanitizer

DevFeed: [GSoC 2025: Usability Improvements for the Undefined Behavior Sanitizer](<https://devfeed.tech/articles/gsoc-2025-usability-improvements-for-the-undefined-behavior-sanitizer-43122.md>)

Original publisher: [Read original article](<https://blog.llvm.org/posts/2025-09-01-gsoc-ubsan-trap-messages/>)

Author: Anthony Tran

Published: 2025-10-20T00:00:00Z

Content type: article

Language: en

Sources: [LLVM Project](<https://devfeed.tech/sources/the-llvm-project-blog.md>)

Topics: [undefined\_behavior](<https://devfeed.tech/topics/undefined-behavior.md>), [debugging](<https://devfeed.tech/topics/debugging.md>), [C](<https://devfeed.tech/topics/c.md>), [C++](<https://devfeed.tech/topics/c-plus-plus.md>), [clang](<https://devfeed.tech/topics/clang.md>), [Objective-C](<https://devfeed.tech/topics/objective-c.md>), [Kernel](<https://devfeed.tech/topics/kernel.md>)

Tags: [2025](<https://devfeed.tech/tags/2025.md>), [c](<https://devfeed.tech/tags/c.md>), [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [clang](<https://devfeed.tech/tags/clang.md>), [codegen](<https://devfeed.tech/tags/codegen.md>), [debug](<https://devfeed.tech/tags/debug.md>), [gsoc](<https://devfeed.tech/tags/gsoc.md>), [improvements](<https://devfeed.tech/tags/improvements.md>), [kernel](<https://devfeed.tech/tags/kernel.md>), [objective-c](<https://devfeed.tech/tags/objective-c.md>), [sanitizer](<https://devfeed.tech/tags/sanitizer.md>), [undefined-behavior](<https://devfeed.tech/tags/undefined-behavior.md>)

### AI overview

This article reports on Google Summer of Code 2025 work to improve the usability of trapping Undefined Behavior Sanitizer (UBSan). It explains how trapping mode supports kernel, embedded, and production-hardening use cases, but previously made debugging undefined behavior difficult. The work improves the information available to developers when debugger execution stops on a sanitizer trap.

### Source excerpt

Introduction My name is Anthony and I had the pleasure of working on improving the Undefined Behavior Sanitizer this Google Summer of Code 2025. My mentors were Dan Liew and Michael Buch. Background Undefined Behavior Sanitizer (UBSan) is a tool for detecting a subset of the undefined behaviors in the C, C++, and Objective-C languages at runtime. This project focused mainly on the trapping variant of UBSan, which is evoked through -fsanitize-trap=<...> along with -fsanitize=<...>. Trapping UBSan is a lighter-weight version of UBSan because upon detection of undefined behavior a trap instruction is executed rather than calling into a runtime library to handle the undefined behavior. This makes it more appealing for kernel, embedded, and production hardening use cases. For cases of undefined behavior that can be detected by UBSan, check out the official clang documentation. An issue with trapping UBSan prior to my work was that it was much harder to debug undefined behavior when it is detected when compared to the non-trapping mode. To illustrate this consider this C program that reads integers from the command line arguments and adds them. #include <stdlib.h>#include <stdio.h>int add(int a, int b) { return a + b;}int main(int argc, const char** argv) { if (argc < 3) return 1; int a = atoi(argv[1]); int b = atoi(argv[2]); int result = add(a, b); printf("Added %d + %d = %d\n", a, b, result); return 0;} If this program is compiled and executed using UBSan with its userspace runtime it provides helpful output diagnosing the problem and also allows execution to continue. $ bin/clang -fsanitize=undefined add.c -g -o add && ./add 2147483647 1add.c:5:13: runtime error: signed integer overflow: 2147483647 + 1 cannot be represented in type 'int'SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior add.c:5:13 Added 2147483647 + 1 = -2147483648 In contrast when using UBSan in trapping mode the program immediately terminates when undefined behavior is detected as shown below. $

## iPhone 17 Screen Sizes

DevFeed: [iPhone 17 Screen Sizes](<https://devfeed.tech/articles/iphone-17-screen-sizes-21086.md>)

Original publisher: [Read original article](<https://useyourloaf.com/blog/iphone-17-screen-sizes/>)

Author: Keith Harrison

Published: 2025-10-13T09:44:39Z

Content type: article

Language: en

Sources: [K. Harrison](<https://devfeed.tech/sources/k-harrison.md>)

Topics: [iphone](<https://devfeed.tech/topics/iphone.md>)

Tags: [apple](<https://devfeed.tech/tags/apple.md>), [auto-layout](<https://devfeed.tech/tags/auto-layout.md>), [display](<https://devfeed.tech/tags/display.md>), [features](<https://devfeed.tech/tags/features.md>), [ios](<https://devfeed.tech/tags/ios.md>), [ios-26](<https://devfeed.tech/tags/ios-26.md>), [iphone](<https://devfeed.tech/tags/iphone.md>), [objective-c](<https://devfeed.tech/tags/objective-c.md>), [screen](<https://devfeed.tech/tags/screen.md>), [swift](<https://devfeed.tech/tags/swift.md>), [wwdc](<https://devfeed.tech/tags/wwdc.md>), [xcode](<https://devfeed.tech/tags/xcode.md>)

### AI overview

This article compares the screen sizes and display specifications of the iPhone 17 lineup. The iPhone 17 and iPhone 17 Pro share a 6.3-inch display, the iPhone 17 Pro Max has a 6.9-inch display, and the new iPhone Air has a 6.5-inch display. It also covers display features, resolutions, safe-area insets, materials, and USB-3 transfer support.

### Source excerpt

There's less variation this year with the base iPhone 17 and Pro models sharing a display. The Plus model is gone but we get a new iPhone Air. Here's what you need to know about the iPhone 17 models. The New Models in a Nutshell There's no iPhone 17 Plus model this year. Instead the iPhone 17 gets the same 6.3" display as the iPhone 17 Pro. The Pro Max keeps the 6.9" display from last year. Finally, we have the new iPhone Air with a 6.5" display. Apple continues to sell the base iPhone 16, 16 Plus, and the iPhone 16e. That gives this years models three different screen sizes: The 6.3" display in the iPhone 17 and 17 Pro has almost the same specs as the iPhone 16 Pro. That brings features such as ProMotion and the Always-on display to the base iPhone 17. The only difference I can see is an increased peak brightness of 3,000 nits (up from 2,000 nits). The Titanium frame of last years Pro models is replaced with an Aluminium unibody. The base iPhone 17 has an Aluminium frame but the iPhone Air has a Titanium frame. Support for USB-3 (10Gbp/s) transfer speeds is still limited to the Pro models. iPhone 17 The base iPhone 17 display upgrades to a spec comparable to the iPhone 16 Pro 6.3" display with ProMotion and Always-on, along with the A19 chip. A19 chip (6-core CPU, 5-core GPU with Neural Accelerators, 16-core Neural Engine) Display: 6.3" Super Retina XDR OLED with ProMotion, Always-On display, and Dynamic Island Screen resolution (points): 402 x 874 Native resolution (pixels): 1206 x 2622 (460 ppi) Native Scale factor: 3x Portrait size classes: w: Compact, h: Regular Landscape size classes: w: Compact, h: Compact The status bar is 54 points high with a top safe area inset of 62 points which gives the following safe area insets: Safe Area Insets (portrait): top: 62, bottom: 34, left: 0, right: 0 Safe Area Insets (landscape): top: 20, bottom: 20, left: 62, right: 62 Note: In landscape there's now a top safe area inset of 20 points. iPhone 17 Pro The iPhone 17 Pro is f

## Swift Default Value in String Interpolations

DevFeed: [Swift Default Value in String Interpolations](<https://devfeed.tech/articles/swift-default-value-in-string-interpolations-21087.md>)

Original publisher: [Read original article](<https://useyourloaf.com/blog/swift-default-value-in-string-interpolations/>)

Author: Keith Harrison

Published: 2025-09-07T08:51:46Z

Content type: article

Language: en

Sources: [K. Harrison](<https://devfeed.tech/sources/k-harrison.md>)

Topics: [Swift](<https://devfeed.tech/topics/swift.md>), [SwiftUI](<https://devfeed.tech/topics/swiftui.md>), [formatting](<https://devfeed.tech/topics/formatting.md>)

Tags: [auto-layout](<https://devfeed.tech/tags/auto-layout.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [ios](<https://devfeed.tech/tags/ios.md>), [localization](<https://devfeed.tech/tags/localization.md>), [objective-c](<https://devfeed.tech/tags/objective-c.md>), [optional](<https://devfeed.tech/tags/optional.md>), [string](<https://devfeed.tech/tags/string.md>), [swift](<https://devfeed.tech/tags/swift.md>), [swift-6-2](<https://devfeed.tech/tags/swift-6-2.md>), [swiftui](<https://devfeed.tech/tags/swiftui.md>), [wwdc](<https://devfeed.tech/tags/wwdc.md>), [xcode](<https://devfeed.tech/tags/xcode.md>)

### AI overview

Swift 6.2 adds a `default` parameter to string interpolation, letting you supply a string when an optional value is `nil` regardless of the optional's underlying type. This avoids forcing a type-matched fallback such as `0` for an optional `Int`, and avoids explicitly describing the optional, which would display `nil`. The source reports that this parameter does not work with `LocalizedStringKey`, so the approach is limited for localized strings.

### Source excerpt

Swift 6.2 makes it easier to interpolate strings with optional values. What's The Problem? In this SwiftUI view I need to create a text string from an optional integer value: struct CounterView: View { let count: Int? var body: some View { Text("The count is \(count)") } } The compiler warns about the optional value: String interpolation produces a debug description for an optional value; did you mean to make this explicit? The compiler suggests either providing a default value or to use String(describing:) to silence the warning. Using the nil-coalescing operator to provide a default value removes the warning but is not ideal. The default value has to match the type of the optional value. That can work when dealing with an optional string. In this example I have an optional Int and there may not be a sensible default value for the nil case. For example, I could use zero: // The count is 0 Text("The count is \(count ?? 0)") The alternative of using the String(describing:) approach is both clumsy and ends up showing the nil value: // The count is nil Text("The count is \(String(describing: count))") What I want is a way to provide a default string regardless of the type of the optional value. Default Value Parameter In Swift 6.2, String interpolation has a new default value parameter that accepts a string regardless of the type of the optional value: // The count is not set Text("The count is \(count, default: "not set")") That's an improvement over outputting nil. Localization One issue is that I've been unable to get this to work with localization. The problem seems to be that LocalizedStringKey doesn't support the default value parameter. So this doesn't work: // Not Supported let key = LocalizedStringKey("The count is: \(count, default: "not set")") Learn More SE-0477 Default Value in String Interpolations Swift Default Value in String Interpolations was originally posted 07 Sep 2025 on useyourloaf.com. Want this direct to your inbox? Sign up and get my free WWDC

## React Native 0.77 - New Styling Features, Android's 16KB page support, Swift Template

DevFeed: [React Native 0.77 - New Styling Features, Android's 16KB page support, Swift Template](<https://devfeed.tech/articles/react-native-0-77-new-styling-features-android-s-16kb-page-support-swift-template-48123.md>)

Original publisher: [Read original article](<https://reactnative.dev/blog/2025/01/21/version-0.77>)

Author: Vojtech Novak; Mazen Chami; Blake Friedman; Rob Hogan

Published: 2025-01-21T00:00:00Z

Content type: release

Language: en

Sources: [React Native Blog](<https://devfeed.tech/sources/react-native-blog.md>)

Topics: [React Native](<https://devfeed.tech/topics/react-native.md>), [Android](<https://devfeed.tech/topics/android.md>), [CSS](<https://devfeed.tech/topics/css.md>), [Swift](<https://devfeed.tech/topics/swift.md>), [Template](<https://devfeed.tech/topics/template.md>), [Objective-C](<https://devfeed.tech/topics/objective-c.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [css](<https://devfeed.tech/tags/css.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [features](<https://devfeed.tech/tags/features.md>), [objective-c](<https://devfeed.tech/tags/objective-c.md>), [react-native](<https://devfeed.tech/tags/react-native.md>), [release](<https://devfeed.tech/tags/release.md>), [swift](<https://devfeed.tech/tags/swift.md>), [template](<https://devfeed.tech/tags/template.md>), [updates](<https://devfeed.tech/tags/updates.md>)

### AI overview

React Native 0.77 introduces new CSS styling capabilities for layout, sizing, and blending, adds Android 15 and 16KB page support, and updates the community template by migrating it to Swift while maintaining Objective-C compatibility.

### Source excerpt

Today we are excited to release React Native 0.77!

## Using Dart FFI and C for Objective-C and Swift Interoperability in Flutter iOS Apps

DevFeed: [Using Dart FFI and C for Objective-C and Swift Interoperability in Flutter iOS Apps](<https://devfeed.tech/articles/platform-channels-are-dead-objective-c-swift-interop-is-here-23986.md>)

Original publisher: [Read original article](<https://quickbirdstudios.com/blog/dart-swift-objective-c-interop/>)

Author: Marvin März

Published: 2023-12-11T15:43:49Z

Content type: tutorial

Language: en

Sources: [QuickBird Studios Blog](<https://devfeed.tech/sources/quickbird-studios-blog.md>)

Topics: [Dart](<https://devfeed.tech/topics/dart.md>), [Flutter](<https://devfeed.tech/topics/flutter.md>), [interoperability](<https://devfeed.tech/topics/interoperability.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Swift](<https://devfeed.tech/topics/swift.md>), [Objective-C](<https://devfeed.tech/topics/objective-c.md>), [C](<https://devfeed.tech/topics/c.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [c](<https://devfeed.tech/tags/c.md>), [dart](<https://devfeed.tech/tags/dart.md>), [flutter](<https://devfeed.tech/tags/flutter.md>), [interop](<https://devfeed.tech/tags/interop.md>), [interoperability](<https://devfeed.tech/tags/interoperability.md>), [ios](<https://devfeed.tech/tags/ios.md>), [objective-c](<https://devfeed.tech/tags/objective-c.md>), [platform](<https://devfeed.tech/tags/platform.md>), [post](<https://devfeed.tech/tags/post.md>), [swift](<https://devfeed.tech/tags/swift.md>)

### AI overview

This guide explains how Dart 2.18's Objective-C/Swift Interop lets Flutter applications call native iOS code from Dart through Dart FFI and C. It discusses limitations of platform channels, including duplicated boilerplate and maintenance concerns, and introduces the interop approach.

### Source excerpt

Dart 2.18 introduced Objective-C/Swift Interop. In this comprehensive guide, we explore how to seamlessly integrate native iOS code into your Flutter app using Dart FFI and C as an interoperability layer. The post Platform Channels are Dead! Objective-C/Swift Interop is Here! appeared first on QuickBird Studios.

## Using annotations to improve iOS APIs on Kotlin Multiplatform

DevFeed: [Using annotations to improve iOS APIs on Kotlin Multiplatform](<https://devfeed.tech/articles/using-annotations-to-improve-ios-apis-on-kotlin-multiplatform-25572.md>)

Original publisher: [Read original article](<https://www.marcogomiero.com/posts/2023/objc-annotiations-better-kmp-api/>)

Author: Marco Gomiero

Published: 2023-09-19T00:00:00Z

Content type: article

Language: en

Sources: [Posts on Marco Gomiero](<https://devfeed.tech/sources/posts-on-marco-gomiero.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Swift](<https://devfeed.tech/topics/swift.md>), [Code Modularity](<https://devfeed.tech/topics/code-modularity.md>)

Tags: [annotations](<https://devfeed.tech/tags/annotations.md>), [apis](<https://devfeed.tech/tags/apis.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [code-duplication](<https://devfeed.tech/tags/code-duplication.md>), [interoperability](<https://devfeed.tech/tags/interoperability.md>), [ios](<https://devfeed.tech/tags/ios.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [mvvm](<https://devfeed.tech/tags/mvvm.md>), [objective-c](<https://devfeed.tech/tags/objective-c.md>), [swift](<https://devfeed.tech/tags/swift.md>)

### AI overview

Kotlin 1.8's @HiddenFromObjC and @ObjCName annotations let MoneyFlow expose its iOS-specific UseCase implementation under the shared UseCase's name while hiding the shared declaration from Objective-C and Swift. MoneyFlow uses native ViewModels and a shared UseCase for business logic, with iOS-specific wrappers to bridge platform differences such as Flows and coroutine cancellation. The wrappers add some duplicated code, which the author considers a reasonable compromise; hiding the duplicate declaration also avoids confusingly similar exported names and reduces the exported framework's binary size. KMP-NativeCoroutines and SKIE are mentioned as alternative interoperability libraries, but the author chose to continue with the wrapper approach to compare the experience.

### Source excerpt

Kotlin 1.8 has introduced new annotations to improve the interoperability of Kotlin with Objective-C and Swift: @ObjCName: allows to customize the name that will be used in Swift or Objective-C @HiddenFromObjC: allows hiding a Kotlin declaration from Objective-C (and Swift). @ShouldRefineInSwift: it marks a Kotlin declaration as swift_private in the Objective-C API, allowing to replace it with a wrapper written in Swift. You can see the release announcement for more details about the interoperability improvements introduced with Kotlin 1.8.

## ATOM (A Touch of Multiplatform) Episode #3 - Touchlab

DevFeed: [ATOM (A Touch of Multiplatform) Episode #3 - Touchlab](<https://devfeed.tech/articles/atom-a-touch-of-multiplatform-episode-3-touchlab-38161.md>)

Original publisher: [Read original article](<https://touchlab.co/atom-a-touch-of-multiplatform-episode-3>)

Published: 2022-12-20T20:51:56Z

Content type: article

Language: en

Sources: [Touchlab](<https://devfeed.tech/sources/touchlab-enterprise-mobile-innovation-development.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>)

Tags: [atom](<https://devfeed.tech/tags/atom.md>), [kmm](<https://devfeed.tech/tags/kmm.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [kotlin-multiplatform-mobile](<https://devfeed.tech/tags/kotlin-multiplatform-mobile.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [objective-c](<https://devfeed.tech/tags/objective-c.md>), [swift](<https://devfeed.tech/tags/swift.md>), [thoughts](<https://devfeed.tech/tags/thoughts.md>), [twitter](<https://devfeed.tech/tags/twitter.md>), [website](<https://devfeed.tech/tags/website.md>)

### AI overview

Episode 3 of the ATOM podcast features Maxwell Anselm from Lutron discussing the company's evaluation, adoption, and scaling of Kotlin Multiplatform Mobile. The conversation covers team structure, learning from failure, iOS development, Swift and Objective-C interoperability, interfaces, CI/CD pipelines, Gradle, Xcode, Compose on iOS, the ecosystem, and the new memory model.

### Source excerpt

In this episode of ATOM, we sit down to talk with Lutron's Maxwell Anselm about going from being a KMM skeptic to a KMM convert.

## When iOS Engineers Should Use Kotlin Multiplatform's expect/actual Syntax

DevFeed: [When iOS Engineers Should Use Kotlin Multiplatform's expect/actual Syntax](<https://devfeed.tech/articles/why-ios-engineers-should-avoid-this-glorified-kmm-technique-34119.md>)

Original publisher: [Read original article](<https://artandscienceofcoding.com/science/avoid-this-kmm-technique/>)

Author: Derek Lee

Published: 2022-09-22T00:00:00Z

Content type: opinion

Language: en

Sources: [art and science of coding](<https://devfeed.tech/sources/art-and-science-of-coding.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [Objective-C](<https://devfeed.tech/topics/objective-c.md>)

Tags: [guide](<https://devfeed.tech/tags/guide.md>), [kmm](<https://devfeed.tech/tags/kmm.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [objective-c](<https://devfeed.tech/tags/objective-c.md>), [science](<https://devfeed.tech/tags/science.md>)

### AI overview

This article argues that iOS engineers building multiplatform apps with Kotlin Multiplatform Mobile should generally write platform-dependent code in Swift instead of using the expect/actual syntax. It identifies building a multiplatform framework as the main case where the syntax may be worth considering and recommends consulting Apple's Objective-C documentation and Kotlin/Native headers when using it.

### Source excerpt

TL;DR If you're an iOS engineer who wants to build multiplatform apps using KMM, the few benefits of using the expect/actual syntax do not outweigh those of writing your platform-dependent code in Swift. The use-case for iOS engineers to consider leveraging expect/actual syntax would be when building a multiplatform framework. If you're going to use expect/actual, be sure to reference Apple's Objective-C documentation over Swift documentation and use the Kotlin/Native headers for the most accurate representation of the iOS APIs available in Kotlin. The expect/actual Syntax of Kotlin Multiplatform Mobile (KMM) The Kotlin Multiplatform SDK includes a syntactical construct integrated into JetBrains IDEs that engineers can use to define classes and functions that are expect -ed (pun intended) to have platform-specific implementations. The actual implementations are also written in Kotlin separately for Android and iOS. When looking at the code modules in a KMM project: within the KMM shared framework module, you first define a class or a function as expected. Then the actual implementations are written for each supported platform module. The following example illustrates what module the code is defined within for Android and iOS: The `common` module defines the expected classes and functions, and platform modules define the actual implementation. We looked at some simple examples in the last blog. These examples are helpful because they allow us to wrap our heads around the concept before diving into something more complicated. I want to take you on a journey of writing some code using this approach to illustrate how this can become more complicated in practice than expected. In fact, I'm going to make a bold statement and propose that there's only a single scenario where you, the iOS Engineer, should even consider using the expect/actual syntax. This post is part of a series on Kotlin Multiplatform: The iOS Engineer's Guide to Beginning Kotlin Multiplatform Development

## Auto linking with Mach-O binaries

DevFeed: [Auto linking with Mach-O binaries](<https://devfeed.tech/articles/auto-linking-with-mach-o-binaries-25407.md>)

Original publisher: [Read original article](<https://smileykeith.com/2022/02/23/lc-linker-option/>)

Author: Keith Smiley

Published: 2022-02-24T02:00:00Z

Content type: article

Language: en

Sources: [Keith Smiley](<https://devfeed.tech/sources/keith-smiley.md>)

Topics: [static linking](<https://devfeed.tech/topics/static-linking.md>)

Tags: [asm](<https://devfeed.tech/tags/asm.md>), [assembly](<https://devfeed.tech/tags/assembly.md>), [bazel](<https://devfeed.tech/tags/bazel.md>), [binaries](<https://devfeed.tech/tags/binaries.md>), [build-system](<https://devfeed.tech/tags/build-system.md>), [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [clang](<https://devfeed.tech/tags/clang.md>), [cmake](<https://devfeed.tech/tags/cmake.md>), [compile](<https://devfeed.tech/tags/compile.md>), [dependencies](<https://devfeed.tech/tags/dependencies.md>), [foundation](<https://devfeed.tech/tags/foundation.md>), [framework](<https://devfeed.tech/tags/framework.md>), [libraries](<https://devfeed.tech/tags/libraries.md>), [linker](<https://devfeed.tech/tags/linker.md>), [linking](<https://devfeed.tech/tags/linking.md>), [maps](<https://devfeed.tech/tags/maps.md>), [module](<https://devfeed.tech/tags/module.md>), [object](<https://devfeed.tech/tags/object.md>), [objective-c](<https://devfeed.tech/tags/objective-c.md>), [succeed](<https://devfeed.tech/tags/succeed.md>)

### AI overview

Mach-O auto linking embeds linker options in object files at compile time, reducing the need to repeat dependency flags at link time. In the Objective-C example, compiling with Clang's `-fmodules` records `Foundation` in an `LC_LINKER_OPTION`, so the later link succeeds without an explicit framework flag; without modules, linking fails until `-framework Foundation` is added. Module maps can also declare libraries and frameworks with `link` directives. Swift object files can record required Swift libraries, including implementation dependencies. When auto linking is unavailable, the excerpt shows Clang and Swift compiler flags for adding linker options, Clang's `--dependent-lib` for library dependencies, and assembly `.linker_option` directives. The compiler flag approach is described as unsuitable for framework options requiring multiple arguments; assembly directives handle spaces and are shown adding both a library and a framework.

### Source excerpt

Auto linking is a feature that embeds information in your binaries' at compile time which is then used at link time to automatically link your dependencies. This allows you to reduce the duplication of flags between the different phases of your (or your consumers') builds. For example, with this Objective-C file: #include <Foundation/Foundation.h> int main() { NSLog(@"Hello, World!"); return 1; } Compiled with: $ clang -fmodules -c foo.m -o foo.o You can then inspect the options added for use at link time: $ otool -l foo.o | grep LC_LINKER_OPTION -A3 cmd LC_LINKER_OPTION cmdsize 40 count 2 string #1 -framework string #2 Foundation ... Now when linking this binary you don't have to pass any extra flags to the linker to make sure you link Foundation: $ ld foo.o -syslibroot `xcrun --show-sdk-path` To compare, if you compile the binary without -fmodules1: $ clang -c foo.m -o foo.o You don't get any LC_LINKER_OPTIONs. Then when linking the binary with the same command as before, it fails with these errors: $ ld foo.o -syslibroot `xcrun --show-sdk-path` Undefined symbols for architecture arm64: "_NSLog", referenced from: _main in foo.o "___CFConstantStringClassReference", referenced from: CFString in foo.o ld: symbol(s) not found for architecture arm64 To make it succeed you must explicitly link Foundation through an argument to your linker invocation: $ ld foo.o -syslibroot `xcrun --show-sdk-path` -framework Foundation Auto linking is also applied when using module maps that use the link directive. For example with this module map file: // module.modulemap module foo { link "foo" link framework "Foundation" } That you include with in this source file: @import foo; int main() { return 1; } And compile (with an include path to the module.modulemap file): $ clang -fmodules -c foo.m -o foo.o -I. The produced object depends on foo and Foundation. This can be useful for handwriting module map files for prebuilt libraries, and for quite a few other cases. You can read about thi

## Getting Square's iOS build ready for Apple Silicon with Bazel

DevFeed: [Getting Square's iOS build ready for Apple Silicon with Bazel](<https://devfeed.tech/articles/getting-square-s-ios-build-ready-for-apple-silicon-with-bazel-15665.md>)

Original publisher: [Read original article](<https://developer.squareup.com/blog/getting-squares-ios-build-ready-for-apple-silicon-with-bazel>)

Author: Jerry Marino

Published: 2022-01-27T20:00:00Z

Content type: tutorial

Language: en

Sources: [Square Corner](<https://devfeed.tech/sources/square-corner-blog-medium.md>)

Topics: [bazel](<https://devfeed.tech/topics/bazel.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [build times](<https://devfeed.tech/topics/build-times.md>), [cpu](<https://devfeed.tech/topics/cpu.md>), [Objective-C](<https://devfeed.tech/topics/objective-c.md>), [Swift](<https://devfeed.tech/topics/swift.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>)

Tags: [apple](<https://devfeed.tech/tags/apple.md>), [arm](<https://devfeed.tech/tags/arm.md>), [bazel](<https://devfeed.tech/tags/bazel.md>), [build](<https://devfeed.tech/tags/build.md>), [build-times](<https://devfeed.tech/tags/build-times.md>), [caching](<https://devfeed.tech/tags/caching.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [ios](<https://devfeed.tech/tags/ios.md>), [objective-c](<https://devfeed.tech/tags/objective-c.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [simulator](<https://devfeed.tech/tags/simulator.md>), [swift](<https://devfeed.tech/tags/swift.md>), [x86](<https://devfeed.tech/tags/x86.md>)

### AI overview

Square describes adapting its Bazel-based iOS build system for Apple Silicon by building and running iOS applications on the M1 simulator. The article explains the available development paths and why device builds and x86_64 builds under Rosetta 2 were not selected.

### Source excerpt

Building and running iOS builds using the M1 simulator

## An Approach for Migrating From Objective-C to Swift

DevFeed: [An Approach for Migrating From Objective-C to Swift](<https://devfeed.tech/articles/an-approach-for-migrating-from-objective-c-to-swift-25811.md>)

Original publisher: [Read original article](<https://www.steveonstuff.com/2022/01/13/migrating-from-objc-to-swift>)

Author: Steve Barnegren

Published: 2022-01-13T00:00:00Z

Content type: tutorial

Language: en

Sources: [Steve Barnegren](<https://devfeed.tech/sources/steve-barnegren.md>)

Topics: [Objective-C](<https://devfeed.tech/topics/objective-c.md>), [Swift](<https://devfeed.tech/topics/swift.md>), [interoperability](<https://devfeed.tech/topics/interoperability.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [tvOS](<https://devfeed.tech/topics/tvos.md>), [generic programming](<https://devfeed.tech/topics/generic-programming.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [apple](<https://devfeed.tech/tags/apple.md>), [enums](<https://devfeed.tech/tags/enums.md>), [generics](<https://devfeed.tech/tags/generics.md>), [interoperability](<https://devfeed.tech/tags/interoperability.md>), [ios](<https://devfeed.tech/tags/ios.md>), [objective-c](<https://devfeed.tech/tags/objective-c.md>), [optional](<https://devfeed.tech/tags/optional.md>), [swift](<https://devfeed.tech/tags/swift.md>), [types](<https://devfeed.tech/tags/types.md>), [with](<https://devfeed.tech/tags/with.md>)

### AI overview

This article shares lessons from transitioning a large iOS and tvOS application from Objective-C to Swift. It explains why simply adding new Swift code produced limited progress and caused Swift code to be constrained by Objective-C interoperability.

### Source excerpt

It feels like Swift is pretty ubiquitous across the Apple ecosystem now, but there's a lot of Objective-C out there. The larger and older the app, the more likely that there's still a bunch of Objective-C powering various bits behind the scenes.

## Kotlin Native -- Using swift, not Objective-C

DevFeed: [Kotlin Native -- Using swift, not Objective-C](<https://devfeed.tech/articles/kotlin-native-using-swift-not-objective-c-24746.md>)

Original publisher: [Read original article](<https://medium.com/yazio-engineering/kotlin-native-using-swift-not-objective-c-d7742c040539?source=rss----65bd178b00af---4>)

Author: Paul Woitaschek

Published: 2021-11-19T08:00:42Z

Content type: article

Language: en

Sources: [YAZIO](<https://devfeed.tech/sources/yazio-engineering-medium.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Swift](<https://devfeed.tech/topics/swift.md>), [Objective-C](<https://devfeed.tech/topics/objective-c.md>), [Boilerplate](<https://devfeed.tech/topics/boilerplate.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [api](<https://devfeed.tech/tags/api.md>), [boilerplate](<https://devfeed.tech/tags/boilerplate.md>), [business-logic](<https://devfeed.tech/tags/business-logic.md>), [code-generation](<https://devfeed.tech/tags/code-generation.md>), [data-class](<https://devfeed.tech/tags/data-class.md>), [enums](<https://devfeed.tech/tags/enums.md>), [interop](<https://devfeed.tech/tags/interop.md>), [ios](<https://devfeed.tech/tags/ios.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [kotlin-native](<https://devfeed.tech/tags/kotlin-native.md>), [ksp](<https://devfeed.tech/tags/ksp.md>), [library](<https://devfeed.tech/tags/library.md>), [mapping](<https://devfeed.tech/tags/mapping.md>), [objective-c](<https://devfeed.tech/tags/objective-c.md>), [productivity](<https://devfeed.tech/tags/productivity.md>), [swift](<https://devfeed.tech/tags/swift.md>)

### AI overview

YAZIO uses Kotlin Native for shared feature logic, but Kotlin types exposed through Objective-C do not provide the Swift-native structs, property types, enums, or sealed classes its iOS API needs. The team has been manually mapping the public API into Swift, which produces a clean interface but adds substantial boilerplate. The excerpt proposes generating those mappings: KSP analyzes Kotlin syntax and provides hooks for code generation, while SwiftPoet generates Swift code. It describes an example that selects annotated classes, derives an enum name, converts contained declarations into enum cases, and writes a Swift file. The excerpt ends during setup guidance, so it does not establish the full implementation or its results.

### Source excerpt

Kotlin Native -- Using Swift, not Objective-C At YAZIO we use Kotlin Native Extensively. The business logic of all new app features is exclusively written in Kotlin. In its core, every screen has one ViewModel which exposes a single Flow<ViewState> that the Android App and the iOS can consume to render the state. On Android, rendering the view state is no burden because it's the language we use in the Android App anyways. However this is different for iOS. While Swift does interop with Objective-C, the public API as seen from Swift is bad. A simple data class is exported as a regular class. The properties are not native Swift types. What should be a Bool becomes a KotlinBoolean. What should be come a Double becomes a KotlinDouble. But what we want is most of the times a struct with Swift types. These are the lesser evils, the greater ones are enums and sealed classes. In Objective-C, they both become regular classes. And therefore lose all the advantages they have when used from Swift. But what we want is a Swift enum. To overcome these restrictions for quite some time our iOS team has created mappings. There is a whole target, dedicated to mapping the Objective-C classes to Swift. Basically when developing a new feature, the whole public API is manually mapped to Swift. This is good because the result is a clean Swift-native API. But that's bad because it's extreme boilerplate and a real productivity killer. What if we could directly generate these mappings and use code generation to handle that for us? Turns out: There are two tools available that make it possible. The first one is KSP. It is basically a library that lets you implement a Kotlin compiler plugin and it gives you hooks to analyze the Kotlin Syntax Tree and generate code based on it. The second one is SwiftPoet. SwiftPoet is a library you can use to generate Swift code from Kotlin, similar to what KotlinPoet and JavaPoet do. Okay, let's get our handy dirty. For the basic setup, just follow the tutorial

[Next page](<https://devfeed.tech/tags/objective-c.md?cursor=WyIyMDIxLTExLTE5VDA4OjAwOjQyKzAwOjAwIiwgIjNiZmEwYTkwLWRhZWItNDNlYy05MDM2LTkxODhlNjg1MjRkMSJd>)