Предположим, что в проекте KMP установлено приложение Sample iOS, в котором в качестве зависимости добавлена структура вывода модуля KMP.
У меня есть функция sampleFuncForStringArrayList(names: ArrayList<String>)
в модуле KMP, которая печатает количество, повторяет и печатает элементы ArrayList.
Когда я вызываю эту функцию из примера приложения iOS, я получаю исключение index out ofbound, потому что NSMutableArray count
, который равен 2 в среде приложения iOS, имеет count
как 24576 при получении как ArrayList в KMP. модуль.
Эта проблема возникает только с ReleaseFramework. debugFramework работает нормально.
//Swift
let namesStringList = NSMutableArray(array: ["Alice", "Bob"])
print("NSMutableArray COUNT : \(namesStringList.count)")
Main().sampleFuncForStringArrayList(names: namesStringList)
//Kotlin
public class Main {
public fun sampleFuncForStringArrayList(names: ArrayList<String>){
println("names.isNullOrEmpty() ${names.isNullOrEmpty()}")
println("names.count ${names.count()}")
names.forEach {
println("Hello $it")
}
}
}
Ожидаемый результат
NSMutableArray COUNT : 2
names.isNullOrEmpty() false
names.count 2
Hello Alice
Hello Bob
Фактический результат:
NSMutableArray COUNT : 2
names.isNullOrEmpty() false
names.count 24576
CRASH
ZIP-файл примера проекта: https://drive.google.com/file/d/1SgmW4hfeWaEeD3vcidnZ81Q9vMJsU9zJ/view?usp=sharing
String
будет какой-то другой [примитивный] тип? - person user28434'mstep   schedule 10.09.2020MutableList
, а неArrayList
ref, я знаю ваше ожидаемое поведение в обоих моих случаях. - person shadowsheep   schedule 11.09.2020MutableList
даже с фреймворком выпуска. С отладочной структурой я получилcount = 0
, но не сбой. Вы пытались использоватьMutableList
как правильный тип для взаимодействия kotlin/swift?fun sampleFuncForStringMutableList(names: MutableList<String>)
- person shadowsheep   schedule 11.09.2020