# Objective-C

Objective-C is a C programming language with object-oriented capabilities and a dynamic runtime.

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

## 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 | Enterprise Mobile Innovation & Development](<https://devfeed.tech/sources/touchlab-enterprise-mobile-innovation-development.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.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.

## 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 Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [interoperability](<https://devfeed.tech/topics/interoperability.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Objective-C](<https://devfeed.tech/topics/objective-c.md>), [Swift](<https://devfeed.tech/topics/swift.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [coroutine](<https://devfeed.tech/tags/coroutine.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

This article explains how Kotlin 1.8 annotations can improve iOS APIs in a Kotlin Multiplatform project. It describes using @HiddenFromObjC and @ObjCName to expose iOS-specific implementations with clearer names while keeping shared business logic and reducing misleading duplicate class names.

### 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.

## 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 multiplatform mobile](<https://devfeed.tech/topics/kotlin-multiplatform-mobile.md>), [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.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: tutorial

Language: en

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

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

Tags: [assembly](<https://devfeed.tech/tags/assembly.md>), [clang](<https://devfeed.tech/tags/clang.md>), [objective-c](<https://devfeed.tech/tags/objective-c.md>), [swift](<https://devfeed.tech/tags/swift.md>)

### AI overview

This article explains automatic linking for Mach-O binaries. It shows how Objective-C compilation can embed linker options for dependencies such as Foundation, how to inspect those options, and how omitting module support causes explicit linking to be required. It also covers module maps, Swift standard-library dependencies, and several ways to add linker options manually with clang, swiftc, or assembly directives.

### 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

## \[Перевод\] От песочных часов к пирамиде: как усовершенствовать структуру тестов

DevFeed: [\[Перевод\] От песочных часов к пирамиде: как усовершенствовать структуру тестов](<https://devfeed.tech/articles/article-23646.md>)

Original publisher: [Read original article](<https://habr.com/ru/companies/badoo/articles/652025/>)

Author: laechoppe (Badoo)

Published: 2022-02-17T12:15:34Z

Content type: tutorial

Language: ru

Sources: [Badoo EN](<https://devfeed.tech/sources/badoo-en.md>), [Badoo RU](<https://devfeed.tech/sources/badoo-ru.md>)

Topics: [iOS](<https://devfeed.tech/topics/ios.md>), [Objective-C](<https://devfeed.tech/topics/objective-c.md>), [Swift](<https://devfeed.tech/topics/swift.md>), [ui](<https://devfeed.tech/topics/ui.md>)

Tags: [badoo](<https://devfeed.tech/tags/badoo.md>), [ios](<https://devfeed.tech/tags/ios.md>), [objective-c](<https://devfeed.tech/tags/objective-c.md>), [qa](<https://devfeed.tech/tags/qa.md>), [qa-automation](<https://devfeed.tech/tags/qa-automation.md>), [swift](<https://devfeed.tech/tags/swift.md>), [tag-23c525fe15c9](<https://devfeed.tech/tags/tag-23c525fe15c9.md>), [tag-910b48292e17](<https://devfeed.tech/tags/tag-910b48292e17.md>), [tag-97ed25004d35](<https://devfeed.tech/tags/tag-97ed25004d35.md>), [tag-e932065bc8da](<https://devfeed.tech/tags/tag-e932065bc8da.md>), [testing](<https://devfeed.tech/tags/testing.md>), [ui](<https://devfeed.tech/tags/ui.md>), [xcuitest](<https://devfeed.tech/tags/xcuitest.md>)

### AI overview

A tutorial on test automation for native iOS applications written in Objective-C and Swift. It explains the test pyramid, recommends many small unit tests, fewer medium-level tests, and very few high-level end-to-end or UI tests, and discusses how projects can develop an unbalanced testing structure.

### Source excerpt

Меня зовут Владислав Романенко, я Senior iOS QA Engineer в Badoo и Bumble. Мы регулярно внедряем новые фичи в приложения, и автоматизация тестирования -- один из способов не пропустить баги. Фактически автотесты входят в жизненный цикл всех частей наших приложений: бэкенда, сервисов, фронтенда и мобильных клиентов. Чем раньше мы обнаружим ошибку, тем дешевле будет её исправить. Сегодня я расскажу об автоматизации тестирования в iOS, потому что на протяжении всей своей карьеры в Badoo я плотно занимался тестированием наших нативных iOS-приложений, которые написаны на Objective-C и Swift. Хотя кое-где я буду упоминать характерные для iOS инструменты и термины (например, XCTest), общие принципы и подходы универсальны. Так что, даже если в вашем проекте используется совсем другой стек, статья будет вам полезна. Читать далее

## 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 Blog RSS Feed](<https://devfeed.tech/sources/square-corner-blog-rss-feed.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>), [generics](<https://devfeed.tech/topics/generics.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: tutorial

Language: en

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

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

Tags: [android](<https://devfeed.tech/tags/android.md>), [code-generation](<https://devfeed.tech/tags/code-generation.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [interop](<https://devfeed.tech/tags/interop.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>), [objective-c](<https://devfeed.tech/tags/objective-c.md>), [swift](<https://devfeed.tech/tags/swift.md>)

### AI overview

This tutorial explains how YAZIO uses Kotlin Native for shared business logic while providing a Swift-native iOS API. It describes the limitations of Kotlin-to-Objective-C interoperability and shows how KSP and SwiftPoet can generate Swift mappings for Kotlin types such as enums and sealed classes.

### 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

## 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-26007.md>)

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

Author: Paul Woitaschek

Published: 2021-11-19T07:21:13Z

Content type: tutorial

Language: en

Sources: [Stories by Paul Woitaschek on Medium](<https://devfeed.tech/sources/stories-by-paul-woitaschek-on-medium.md>)

Topics: [kotlin-native](<https://devfeed.tech/topics/kotlin-native.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Swift](<https://devfeed.tech/topics/swift.md>), [Code generation](<https://devfeed.tech/topics/code-generation.md>), [Objective-C](<https://devfeed.tech/topics/objective-c.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [Library](<https://devfeed.tech/topics/library.md>), [Tutorial](<https://devfeed.tech/topics/tutorial.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [code-generation](<https://devfeed.tech/tags/code-generation.md>), [compiler](<https://devfeed.tech/tags/compiler.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>), [objective-c](<https://devfeed.tech/tags/objective-c.md>), [swift](<https://devfeed.tech/tags/swift.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>)

### AI overview

This developer article explains how YAZIO uses Kotlin Native for shared business logic while addressing the limitations of exposing Kotlin types through Objective-C to Swift. It describes manually mapping the generated API to Swift and introduces KSP and SwiftPoet as tools for generating Swift mappings and reducing boilerplate.

### 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

## KMM Oddity #1: Interface methods with underscores

DevFeed: [KMM Oddity #1: Interface methods with underscores](<https://devfeed.tech/articles/kmm-oddity-1-interface-methods-with-underscores-24737.md>)

Original publisher: [Read original article](<https://medium.com/xorum-io/kmm-oddity-1-interface-methods-with-underscores-21523b8ed797?source=rss----92bb7980cc9f---4>)

Author: Yev Kanivets

Published: 2021-09-20T04:23:21Z

Content type: tutorial

Language: en

Sources: [xorum.io - Medium](<https://devfeed.tech/sources/xorum-io-medium.md>)

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

Tags: [android](<https://devfeed.tech/tags/android.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [ios](<https://devfeed.tech/tags/ios.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-native](<https://devfeed.tech/tags/kotlin-native.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [objective-c](<https://devfeed.tech/tags/objective-c.md>)

### AI overview

This article examines a Kotlin Multiplatform Mobile interoperability oddity in iOS. It explains how the Kotlin/Native compiler can expose an interface method with an underscore suffix, such as eat(food_:), when similarly named methods from different interfaces may clash in Objective-C.

### Source excerpt

Kotlin Multiplatform attracts more and more developers every day. Especially after the technology transitioned to the Alpha stage. On its way to Beta, KMP removes all major hassles (Memory Model, for example). Nonetheless, you can still find "a few" more minor bugs and oddities reported in Kotlin's YouTrack. They aren't blockers for using KMP in your production application but may cost you several hours of wondering what and why is happening in your mobile application (mainly on iOS). I faced many such issues myself since I've started using Kotlin Multiplatform Mobile two years ago. In this series of articles, I'll share my favorite oddities of KMM with explanations and workarounds (if possible). Kotlin/Native Obj-C interop Shared KMM modules are written in Kotlin, hence can be used in Android native applications as it is. On iOS, it's more complicated because of Objective-C and Swift, which can't directly use Kotlin code. Kotlin/Native plugin compiles shared KMM modules to iOS frameworks, which contain binary and Obj-C header. You can find them in the build folder of the shared module, under bin/iOS/. Many concepts of Kotlin don't exist in Obj-C, so specific shortcuts and workarounds need to be applied to make it work. It is where some oddities start appearing. Interface methods naming clash Let's say we have two types of pets -- Dog and Cat, which we need to feed with some specific Food. In Kotlin, we could represent that with two interfaces, each having an internal (embedded) Food class. https://medium.com/media/b868e0383cdc20566aef171daa863a87/href It works perfectly well in Android, but on iOS Dog will have eat(food_:) method instead of eat(food:). Where does that underscore suffix come from? And why do we need it? It looks like Kotlin/Native compiler thinks there will be a clash between eat(food:) methods of Dog and Cat interfaces, so it's safer to make them different by implicitly adding an underscore to the 2nd one. I'm not sure it will become a problem and i

## AppCode 2021.2: улучшения поддержки Swift, автодополнение выражений, окно иерархии вызовов для Swift и не только

DevFeed: [AppCode 2021.2: улучшения поддержки Swift, автодополнение выражений, окно иерархии вызовов для Swift и не только](<https://devfeed.tech/articles/appcode-2021-2-swift-swift-23930.md>)

Original publisher: [Read original article](<https://habr.com/ru/companies/JetBrains/articles/573126/>)

Author: yeswolf (JetBrains)

Published: 2021-08-16T09:53:35Z

Content type: release

Language: ru

Sources: [JetBrains RU](<https://devfeed.tech/sources/jetbrains-ru.md>)

Topics: [Swift](<https://devfeed.tech/topics/swift.md>), [ide](<https://devfeed.tech/topics/ide.md>), [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [swift-package-manager](<https://devfeed.tech/topics/swift-package-manager.md>), [async/await](<https://devfeed.tech/topics/async-await.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [Objective-C](<https://devfeed.tech/topics/objective-c.md>)

Tags: [appcode](<https://devfeed.tech/tags/appcode.md>), [async](<https://devfeed.tech/tags/async.md>), [await](<https://devfeed.tech/tags/await.md>), [call-hierarchy](<https://devfeed.tech/tags/call-hierarchy.md>), [complete-statement](<https://devfeed.tech/tags/complete-statement.md>), [ide](<https://devfeed.tech/tags/ide.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>), [local-history](<https://devfeed.tech/tags/local-history.md>), [mobile](<https://devfeed.tech/tags/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>), [swift-package-manager](<https://devfeed.tech/tags/swift-package-manager.md>)

### AI overview

This release article describes AppCode 2021.2 improvements, including support for Swift features such as result builders, enum Codable synthesis, and async/await. It also covers documentation completion, Call Hierarchy, Swift Package Manager build and debugging support, a Kotlin Multiplatform Mobile plugin, a debugger Preview Tab, and Local History search.

### Source excerpt

Привет, Хабр! В этом посте, как и всегда, расскажем о новом релизе AppCode. Всем, кому интересно, -- добро пожаловать под кат. Читать далее

## Breaking Loose from Third-Party Lock-In with Custom Refactoring Tools

DevFeed: [Breaking Loose from Third-Party Lock-In with Custom Refactoring Tools](<https://devfeed.tech/articles/breaking-loose-from-third-party-lock-in-with-custom-refactoring-tools-1999.md>)

Original publisher: [Read original article](<https://developers.soundcloud.com/blog//breaking-loose-from-third-party-lock-in-with-custom-refactoring-tools>)

Published: 2020-08-11T00:00:00Z

Content type: tutorial

Language: en

Sources: [SoundCloud Backstage Blog](<https://devfeed.tech/sources/soundcloud-backstage-blog.md>)

Topics: [Refactoring](<https://devfeed.tech/topics/refactoring.md>), [Test-driven development](<https://devfeed.tech/topics/tdd.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Swift](<https://devfeed.tech/topics/swift.md>), [Objective-C](<https://devfeed.tech/topics/objective-c.md>), [Xcode](<https://devfeed.tech/topics/xcode.md>), [Code](<https://devfeed.tech/topics/code.md>), [Software](<https://devfeed.tech/topics/software.md>)

Tags: [ast-matchers](<https://devfeed.tech/tags/ast-matchers.md>), [code](<https://devfeed.tech/tags/code.md>), [developers](<https://devfeed.tech/tags/developers.md>), [ios](<https://devfeed.tech/tags/ios.md>), [libtooling](<https://devfeed.tech/tags/libtooling.md>), [llvm](<https://devfeed.tech/tags/llvm.md>), [refactoring](<https://devfeed.tech/tags/refactoring.md>), [software](<https://devfeed.tech/tags/software.md>), [swift](<https://devfeed.tech/tags/swift.md>), [technology](<https://devfeed.tech/tags/technology.md>), [third-party](<https://devfeed.tech/tags/third-party.md>), [tools](<https://devfeed.tech/tags/tools.md>), [xcode](<https://devfeed.tech/tags/xcode.md>)

### AI overview

This article describes how SoundCloud automated the migration of more than 900 Objective-C Specta specification files to plain XCTest tests using custom refactoring tools. The effort removed Specta from the codebase while supporting ongoing iOS development in Swift.

### Source excerpt

Code refactoring is an essential part of the job of software developers. As time goes on, technology evolves, product requirements change...

## Shipping Binary Frameworks With Swift 5.0

DevFeed: [Shipping Binary Frameworks With Swift 5.0](<https://devfeed.tech/articles/shipping-binary-frameworks-with-swift-5-0-15851.md>)

Original publisher: [Read original article](<https://developer.squareup.com/blog/shipping-binary-frameworks-with-swift-5-0>)

Author: Chris Williams

Published: 2019-05-31T09:00:00Z

Content type: tutorial

Language: en

Sources: [Square Corner Blog RSS Feed](<https://devfeed.tech/sources/square-corner-blog-rss-feed.md>)

Topics: [Swift](<https://devfeed.tech/topics/swift.md>), [Framework](<https://devfeed.tech/topics/framework.md>), [Objective-C](<https://devfeed.tech/topics/objective-c.md>), [Xcode](<https://devfeed.tech/topics/xcode.md>)

Tags: [binaries](<https://devfeed.tech/tags/binaries.md>), [bridge](<https://devfeed.tech/tags/bridge.md>), [bridging](<https://devfeed.tech/tags/bridging.md>), [compatibility](<https://devfeed.tech/tags/compatibility.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [objective-c](<https://devfeed.tech/tags/objective-c.md>), [swift](<https://devfeed.tech/tags/swift.md>), [toolchains](<https://devfeed.tech/tags/toolchains.md>), [xcode](<https://devfeed.tech/tags/xcode.md>)

### AI overview

This tutorial explains how to ship binary frameworks with Swift 5.0. It covers ABI stability, the future role of module stability, and using Objective-C bridging to provide a more stable interface across Swift toolchain versions.

### Source excerpt

How to get a binary framework shipped with Swift 5.0

## Developing on iOS and Android

DevFeed: [Developing on iOS and Android](<https://devfeed.tech/articles/developing-on-ios-and-android-15610.md>)

Original publisher: [Read original article](<https://developer.squareup.com/blog/developing-on-ios-and-android>)

Author: Jesse Wilson

Published: 2019-04-22T19:00:00Z

Content type: article

Language: en

Sources: [Square Corner Blog RSS Feed](<https://devfeed.tech/sources/square-corner-blog-rss-feed.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Swift](<https://devfeed.tech/topics/swift.md>), [Objective-C](<https://devfeed.tech/topics/objective-c.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [development](<https://devfeed.tech/tags/development.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [ios](<https://devfeed.tech/tags/ios.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [mobile](<https://devfeed.tech/tags/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>)

### AI overview

This article describes the convergence of iOS and Android development and the redundancy of maintaining separate implementations. It presents cross-team code reviews and an incremental multiplatform Kotlin experiment, beginning with replacing Objective-C persistence code using Kotlin/Native and SQLDelight.

### Source excerpt

The convergence of iOS and Android development

## How We Develop New Features Using Offsites and Clean Architecture

DevFeed: [How We Develop New Features Using Offsites and Clean Architecture](<https://devfeed.tech/articles/how-we-develop-new-features-using-offsites-and-clean-architecture-2052.md>)

Original publisher: [Read original article](<https://developers.soundcloud.com/blog//how-we-develop-new-features-using-offsites-and-clean-architecture>)

Published: 2018-11-02T00:00:00Z

Content type: article

Language: en

Sources: [SoundCloud Backstage Blog](<https://devfeed.tech/sources/soundcloud-backstage-blog.md>)

Topics: [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Swift](<https://devfeed.tech/topics/swift.md>), [Objective-C](<https://devfeed.tech/topics/objective-c.md>), [mvc](<https://devfeed.tech/topics/mvc.md>), [App](<https://devfeed.tech/topics/app.md>)

Tags: [app](<https://devfeed.tech/tags/app.md>), [apple](<https://devfeed.tech/tags/apple.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [bug](<https://devfeed.tech/tags/bug.md>), [code](<https://devfeed.tech/tags/code.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [ios](<https://devfeed.tech/tags/ios.md>), [mvc](<https://devfeed.tech/tags/mvc.md>), [new-feature](<https://devfeed.tech/tags/new-feature.md>), [swift](<https://devfeed.tech/tags/swift.md>)

### AI overview

SoundCloud describes how its iOS team developed new features while modernizing a large legacy codebase containing Objective-C and Swift. The team adopted the VIPER architectural pattern, compared with MVC, and used it successfully for the Mini Player and later features. The article also explains how project kickoffs and focused offsites support feature planning, brainstorming, and team productivity.

### Source excerpt

The current SoundCloud iOS App was built back in 2014, resulting in a huge codebase consisting of both Objective-C and Swift, with multiple...

## Delegates vs Closure Callbacks

DevFeed: [Delegates vs Closure Callbacks](<https://devfeed.tech/articles/delegates-vs-closure-callbacks-25806.md>)

Original publisher: [Read original article](<https://www.steveonstuff.com/2018/08/16/delegates-vs-closure-callbacks>)

Author: Steve Barnegren

Published: 2018-08-16T00:00:00Z

Content type: comparison

Language: en

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

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

Tags: [callback](<https://devfeed.tech/tags/callback.md>), [closure](<https://devfeed.tech/tags/closure.md>), [compare](<https://devfeed.tech/tags/compare.md>), [delegates](<https://devfeed.tech/tags/delegates.md>), [objective-c](<https://devfeed.tech/tags/objective-c.md>), [patterns](<https://devfeed.tech/tags/patterns.md>), [swift](<https://devfeed.tech/tags/swift.md>)

### AI overview

This comparison examines delegate and closure callback patterns in Swift, focusing on retain-cycle handling and managing callbacks from multiple instances. It finds delegates safer for weak-reference relationships, while closure callbacks are clearer when separating callbacks for multiple instances.

### Source excerpt

Remember how awesome the delegate pattern was in Objective-C? Enabling classes to be super reusable by delegating out the bits that you might want control over. There's a reason that it's so ubiquitous across Cocoa Touch, it's just so damn good!

## Artisanal Objective-C Sum Types

DevFeed: [Artisanal Objective-C Sum Types](<https://devfeed.tech/articles/artisanal-objective-c-sum-types-20448.md>)

Original publisher: [Read original article](<https://medium.com/twitch-news/artisanal-objective-c-sum-types-8ea1ab9da342?source=rss----3ae745429979--engineering>)

Author: Heath Borders

Published: 2018-05-14T18:49:35Z

Content type: tutorial

Language: en

Sources: [Twitch](<https://devfeed.tech/sources/twitch.md>)

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

Tags: [c](<https://devfeed.tech/tags/c.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [enum](<https://devfeed.tech/tags/enum.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [ios](<https://devfeed.tech/tags/ios.md>), [objective-c](<https://devfeed.tech/tags/objective-c.md>), [swift](<https://devfeed.tech/tags/swift.md>), [twitch](<https://devfeed.tech/tags/twitch.md>), [types](<https://devfeed.tech/tags/types.md>)

### AI overview

The article explains how to represent sum types in Objective-C. It contrasts Swift enums and C unions with enums, then presents a class-based, callback-driven approach for modeling distinct Objective-C object types under ARC.

### Source excerpt

A sum type combines many possible differently-typed values into a single value, expressed in Swift as an enum. https://medium.com/media/6217cfe231386e04ce2e7228080fae7a/href In C, we can achieve the power of Swift's enum with a combination of a C union and a C enum: https://medium.com/media/3f1696d38fcec2600a942ffbe03c8cd4/href First, I'm sure you notice Swift's enum is more concise, but it's also safer. In C, the compiler doesn't prevent us from either creating an example with a mismatched type or from consuming a union as a mismatched type: https://medium.com/media/82f0586deab20a07abc615a9e459028e/href Trying to mismatch our enum types in Swift won't compile. Yay! https://medium.com/media/03d37cc33364b48d851beb4ccf38a97d/href Unfortunately, in Objective-C, we can't use Objective-C objects in structs or unions in ARC, so we can't use our C sum type with Objective-C objects. However, we can build a similar construct by hand. First, we need a class to capture all of the distinct types, and expose them through a single block-based callback interface: https://medium.com/media/78216b190ad6501c26ad89d0864b1c5c/href We must declare forward references for our distinct types, which we'll define later. We mark new and init as NS_UNAVAILABLE so that consumers won't be able to instantiate our base class directly. If they use -Wobjc-designated-initializers, they won't be able to subclass our base class either (without importing ExamplePrivate.h, which we won't distribute to them). Next, we'll declare our distinct types: https://medium.com/media/329743de725ccd196c3f535306714cf9/hrefhttps://medium.com/media/1785598f614b3963a0a39ec81d8c5dac/href They're simply plain-old-objective-c-objects that extend our base class. Our base class and our distinct types all have switchFoo:bar:. The distinct types will simply call the respective callback block with self. The base class will have an empty implementation. We use NS_REQUIRES_SUPER on switchFoo:bar: because if we add another distinct

## Build Native Interfaces - Camera Edition

DevFeed: [Build Native Interfaces - Camera Edition](<https://devfeed.tech/articles/build-native-interfaces-camera-edition-19229.md>)

Original publisher: [Read original article](<https://www.codenameone.com/blog/build-native-interfaces-module-camera-edition/>)

Author: Shai Almog

Published: 2018-04-03T00:00:00Z

Content type: article

Language: en

Sources: [CodeName One](<https://devfeed.tech/sources/codename-one.md>)

Topics: [Objective-C](<https://devfeed.tech/topics/objective-c.md>), [Code](<https://devfeed.tech/topics/code.md>), [configuration](<https://devfeed.tech/topics/configuration.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [native](<https://devfeed.tech/tags/native.md>), [objective-c](<https://devfeed.tech/tags/objective-c.md>), [tutorials](<https://devfeed.tech/tags/tutorials.md>)

### AI overview

A new course module explains how to build the Camera cn1lib and work with native interfaces. It covers Objective-C, callbacks, delegates, and configuration issues, providing broader guidance for native integration.

### Source excerpt

I discussed the new Camera cn1lib last week. One of the motivations for doing it (besides the request from an enterprise account) was that of a new course module. Last week I added a new module covering the process of building the camera cn1lib... We have several online videos (both in the course and outside of it) covering native interfaces. So why do we need another one? Working with native code is error prone & complex. A lot of the tutorials we built in the past ended up spending more time on configuration issues than on code. In this module I talked a lot about Objective-C, callbacks, delegates & more. If you are thinking about native integration this helps give a more rounded view of the options.

## Meltdown and Spectre Server Updates and Codename One Feature Updates

DevFeed: [Meltdown and Spectre Server Updates and Codename One Feature Updates](<https://devfeed.tech/articles/meltdown-and-other-updates-19365.md>)

Original publisher: [Read original article](<https://www.codenameone.com/blog/meltdown-updates/>)

Author: Shai Almog

Published: 2018-01-16T00:00:00Z

Content type: article

Language: en

Sources: [CodeName One](<https://devfeed.tech/sources/codename-one.md>)

Topics: [Vulnerabilities](<https://devfeed.tech/topics/vulnerabilities.md>), [Server](<https://devfeed.tech/topics/server.md>), [IO](<https://devfeed.tech/topics/io.md>), [Objective-C](<https://devfeed.tech/topics/objective-c.md>), [Java](<https://devfeed.tech/topics/java.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Barcode](<https://devfeed.tech/topics/barcode.md>), [QR Code](<https://devfeed.tech/topics/qrcode.md>), [simulator](<https://devfeed.tech/topics/simulator.md>), [API](<https://devfeed.tech/topics/api.md>)

Tags: [announcement](<https://devfeed.tech/tags/announcement.md>), [api](<https://devfeed.tech/tags/api.md>), [blog](<https://devfeed.tech/tags/blog.md>), [io](<https://devfeed.tech/tags/io.md>), [ios](<https://devfeed.tech/tags/ios.md>), [java](<https://devfeed.tech/tags/java.md>), [objective-c](<https://devfeed.tech/tags/objective-c.md>), [qr-code](<https://devfeed.tech/tags/qr-code.md>), [servers](<https://devfeed.tech/tags/servers.md>), [simulator](<https://devfeed.tech/tags/simulator.md>), [updates](<https://devfeed.tech/tags/updates.md>), [vulnerabilities](<https://devfeed.tech/tags/vulnerabilities.md>)

### AI overview

The post announces server updates in response to the Meltdown and Spectre chip vulnerabilities, with possible short-term downtime and limited expected impact on build speed because IO, rather than CPU speed, is the main bottleneck. It also mentions new Codename One libraries for Objective-C interoperability and Scandit barcode and QR code scanning, plus a push notification simulator feature.

### Source excerpt

I've been so busy I just don't have time to blog as much as I should. I do hope next month will be better in this regard (more on that below) but right now I have to make an important announcement. There are new chip vulnerabilities I'm sure you heard a lot about specifically Meltdown & Spectre. Thankfully we are at a layer that shouldn't be impacted by these issues but we need to update our servers and will be doing so over the course of the next few days (possibly more as patches get updated).

## Friday Q&A 2017-10-27: Locks, Thread Safety, and Swift: 2017 Edition

DevFeed: [Friday Q&A 2017-10-27: Locks, Thread Safety, and Swift: 2017 Edition](<https://devfeed.tech/articles/friday-q-a-2017-10-27-locks-thread-safety-and-swift-2017-edition-30624.md>)

Original publisher: [Read original article](<http://www.mikeash.com/pyblog/friday-qa-2017-10-27-locks-thread-safety-and-swift-2017-edition.html>)

Author: Mike Ash

Published: 2017-10-27T11:28:00Z

Content type: article

Language: en

Sources: [Mike Ash](<https://devfeed.tech/sources/mike-ash.md>)

Topics: [Swift](<https://devfeed.tech/topics/swift.md>), [Concurrency](<https://devfeed.tech/topics/concurrency.md>), [Deadlock](<https://devfeed.tech/topics/deadlock.md>), [Objective-C](<https://devfeed.tech/topics/objective-c.md>)

Tags: [concurrent](<https://devfeed.tech/tags/concurrent.md>), [deadlock](<https://devfeed.tech/tags/deadlock.md>), [locks](<https://devfeed.tech/tags/locks.md>), [mutex](<https://devfeed.tech/tags/mutex.md>), [objective-c](<https://devfeed.tech/tags/objective-c.md>), [safety](<https://devfeed.tech/tags/safety.md>), [swift](<https://devfeed.tech/tags/swift.md>), [thread](<https://devfeed.tech/tags/thread.md>), [threading](<https://devfeed.tech/tags/threading.md>), [threads](<https://devfeed.tech/tags/threads.md>)

### AI overview

An updated guide to locks and thread safety in Swift, covering mutex types, their behavior, and related Apple and Objective-C synchronization facilities.

### Source excerpt

Back in the dark ages of Swift 1, I wrote an article about locks and thread safety in Swift. The march of time has made it fairly obsolete, and reader Seth Willits suggested I update it for the modern age, so here it is! (Read More)

## Leveraging frameworks to speed up our development on iOS - Part 1

DevFeed: [Leveraging frameworks to speed up our development on iOS - Part 1](<https://devfeed.tech/articles/leveraging-frameworks-to-speed-up-our-development-on-ios-part-1-2077.md>)

Original publisher: [Read original article](<https://developers.soundcloud.com/blog//leveraging-frameworks-to-speed-up-our-development-on-ios-part-1>)

Published: 2017-10-16T00:00:00Z

Content type: article

Language: en

Sources: [SoundCloud Backstage Blog](<https://devfeed.tech/sources/soundcloud-backstage-blog.md>)

Topics: [iOS](<https://devfeed.tech/topics/ios.md>), [Development](<https://devfeed.tech/topics/development.md>), [build times](<https://devfeed.tech/topics/build-times.md>), [build performance](<https://devfeed.tech/topics/build-performance.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>), [Scalability](<https://devfeed.tech/topics/scalability.md>), [Objective-C](<https://devfeed.tech/topics/objective-c.md>), [Code](<https://devfeed.tech/topics/code.md>), [Swift](<https://devfeed.tech/topics/swift.md>), [Cache](<https://devfeed.tech/topics/cache.md>), [Git](<https://devfeed.tech/topics/git.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [building](<https://devfeed.tech/tags/building.md>), [code](<https://devfeed.tech/tags/code.md>), [development](<https://devfeed.tech/tags/development.md>), [git](<https://devfeed.tech/tags/git.md>), [ios](<https://devfeed.tech/tags/ios.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [scalability](<https://devfeed.tech/tags/scalability.md>), [speed](<https://devfeed.tech/tags/speed.md>), [swift](<https://devfeed.tech/tags/swift.md>), [time](<https://devfeed.tech/tags/time.md>), [xcode](<https://devfeed.tech/tags/xcode.md>)

### AI overview

SoundCloud describes how its growing iOS codebase developed long compile times, conflicts, and productivity problems. The team modularized the iOS project into modules with defined responsibilities and public interfaces, aiming to improve development speed and scalability. The article introduces the motivation and context for this modularization journey, including large targets, Objective-C and Swift code, CocoaPods dependencies, costly clean builds, and branch-switching overhead.

### Source excerpt

Growth in code bases come with exciting scalability challenges. As the size of our iOS codebase and team at SoundCloud grew, we faced challenges: long compile times and conflicts. Our productivity started to suffer as a result. We took inspiration from the work done in the backend (Building Products at SoundCloud) and applied it to mobile development. The main goal was to get back to a state where development is fun, fast, and would scale as the number of contributors grew. We modularized our iOS project by splitting it up into modules with well-defined responsibilities and public interfaces that interconnect them.

## Friday Q&A 2017-10-06: Type-Safe User Defaults

DevFeed: [Friday Q&A 2017-10-06: Type-Safe User Defaults](<https://devfeed.tech/articles/friday-q-a-2017-10-06-type-safe-user-defaults-30623.md>)

Original publisher: [Read original article](<http://www.mikeash.com/pyblog/friday-qa-2017-10-06-type-safe-user-defaults.html>)

Author: Mike Ash

Published: 2017-10-06T12:55:00Z

Content type: tutorial

Language: en

Sources: [Mike Ash](<https://devfeed.tech/sources/mike-ash.md>)

Topics: [Swift](<https://devfeed.tech/topics/swift.md>), [Library](<https://devfeed.tech/topics/library.md>), [API](<https://devfeed.tech/topics/api.md>), [Objective-C](<https://devfeed.tech/topics/objective-c.md>), [Vapor](<https://devfeed.tech/topics/swift-vapor.md>)

Tags: [2017](<https://devfeed.tech/tags/2017.md>), [api](<https://devfeed.tech/tags/api.md>), [article](<https://devfeed.tech/tags/article.md>), [code](<https://devfeed.tech/tags/code.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [objective-c](<https://devfeed.tech/tags/objective-c.md>), [swift](<https://devfeed.tech/tags/swift.md>)

### AI overview

This tutorial presents a type-safe Swift layer over NSUserDefaults. It describes typed keys, automatic key naming, default values, optional values, and conversion handled internally, with implementation examples.

### Source excerpt

It's fun to re-imagine traditional techniques with a Swift twist. I've implemented a type-safe layer on top of the venerable NSUserDefaults, and I'm going to discuss my little library today. Credit/blame for this idea goes to local reader José Vazquez, although he inspired it by accident while talking about something else. (Read More)

## Doppl Sample Update - Kevin Galligan

DevFeed: [Doppl Sample Update - Kevin Galligan](<https://devfeed.tech/articles/doppl-sample-update-kevin-galligan-38189.md>)

Original publisher: [Read original article](<https://touchlab.co/doppl-sample-update>)

Published: 2017-10-04T15:00:55Z

Content type: article

Language: en

Sources: [Touchlab | Enterprise Mobile Innovation & Development](<https://devfeed.tech/sources/touchlab-enterprise-mobile-innovation-development.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [RxJava](<https://devfeed.tech/topics/rxjava.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Xcode](<https://devfeed.tech/topics/xcode.md>), [Objective-C](<https://devfeed.tech/topics/objective-c.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-library](<https://devfeed.tech/tags/android-library.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [built-by-touchlab](<https://devfeed.tech/tags/built-by-touchlab.md>), [code-sharing](<https://devfeed.tech/tags/code-sharing.md>), [dependencies](<https://devfeed.tech/tags/dependencies.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [java](<https://devfeed.tech/tags/java.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [objective-c](<https://devfeed.tech/tags/objective-c.md>), [retrofit](<https://devfeed.tech/tags/retrofit.md>), [rxjava](<https://devfeed.tech/tags/rxjava.md>), [update](<https://devfeed.tech/tags/update.md>), [version](<https://devfeed.tech/tags/version.md>), [xcode](<https://devfeed.tech/tags/xcode.md>)

### AI overview

A progress update on Touchlab's Doppl libraries and sample apps. The update covers compatibility work for J2objc 2.0.4, redeployed libraries, Party Clicker, reactive Room architecture code, and planned work on RxJava 2, Retrofit 2, Xcode support, the Gradle plugin, Architecture Components, and Kotlin.

### Source excerpt

We're going through and updating Doppl libs & sample apps. For the next few months, we'll be working with 2.0.4 and locking down the libraries and versions.

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