Skip to content

Commit 2befbbb

Browse files
committed
fix: NSData.dataWithBytes is no longer bound by that name in Kotlin/Native 2.2.x. The replacement uses NSMutableData.appendBytes:length:, an instance method that has stable Kotlin/Native bindings across versions. NSMutableData is a subclass of NSData so the return type is compatible.
1 parent 7c5476d commit 2befbbb

1 file changed

Lines changed: 7 additions & 2 deletions

File tree

imageselector/src/iosMain/kotlin/com/wannaverse/imageselector/ByteArrayExtension.kt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ import org.jetbrains.skia.Data
1010
import org.jetbrains.skia.EncodedImageFormat
1111
import org.jetbrains.skia.Image
1212
import platform.Foundation.NSData
13+
import platform.Foundation.NSMutableData
14+
import platform.Foundation.appendBytes
1315
import platform.UIKit.UIImage
1416
import platform.UIKit.UIImageJPEGRepresentation
1517
import platform.UIKit.UIImagePNGRepresentation
@@ -54,8 +56,11 @@ private fun UIImage.encode(format: ImageCompressionFormat, quality: Int): NSData
5456
}
5557

5658
@OptIn(ExperimentalForeignApi::class)
57-
private fun ByteArray.toNSData(): NSData = usePinned {
58-
NSData.dataWithBytes(bytes = it.addressOf(0), length = size.toULong())
59+
private fun ByteArray.toNSData(): NSData {
60+
val data = NSMutableData()
61+
if (isEmpty()) return data
62+
usePinned { data.appendBytes(it.addressOf(0), size.toULong()) }
63+
return data
5964
}
6065

6166
@OptIn(ExperimentalForeignApi::class)

0 commit comments

Comments
 (0)