Swift - bagaimana cara menggunakan malloc?

Saya mencoba menerjemahkan aplikasi Objective-C ke Swift dan saya tidak tahu cara mengimplementasikan malloc.

Apakah mungkin untuk menggunakannya di Swift?

Terima kasih


person MeV    schedule 18.11.2014    source sumber
comment
Jika Anda ingin menggunakan malloc untuk mengalokasikan sejumlah memori, Anda tidak perlu melakukannya. Alokasi memori langsung tidak digunakan di Swift.   -  person Kyokook Hwang    schedule 18.11.2014
comment
@KyokookHwang: Anda dapat menggunakan malloc() tanpa masalah di Swift. Pertanyaannya adalah apakah Anda harus melakukannya atau lebih baik menggunakan struktur data lain (misalnya Array).   -  person Martin R    schedule 18.11.2014
comment
Ini akan membantu untuk melihat masalah konkret Anda. malloc() dapat digunakan, tetapi mungkin ada alternatif yang lebih baik.   -  person Martin R    schedule 18.11.2014
comment
Terima kasih. Kebutuhan saya adalah mengalokasikan sejumlah memori untuk buffer audio: buffer.mData = malloc( inNumberFrames * 2 ); // ukuran buffer   -  person MeV    schedule 18.11.2014
comment
Saya mungkin akan mencari solusi lain. Terima kasih   -  person MeV    schedule 18.11.2014
comment
Lihat juga jawaban saya di sini: stackoverflow.com/a/26006918/341994   -  person matt    schedule 27.11.2014


Jawaban (1)


Anda perlu menerapkan header penghubung saat Anda menggunakan ObjC atau C dari Swift. Fungsi yang diekspor oleh header penghubung Anda kemudian tersedia di aplikasi/modul Swift Anda. Lihat di sini, untuk ikhtisarnya.

Jika Anda hanya perlu "memanggil beberapa kode" di sisi C, maka fungsi yang diekspor dari C pada dasarnya hanyalah pembungkus untuk Swift. Namun, jika Anda perlu berinteraksi dengan data yang dikembalikan dari fungsi tersebut -- terutama jika malloc dan bukan primitif sederhana -- Swift memiliki sejumlah tipe terkait C yang siap untuk Anda gunakan (lihat di sini untuk informasi lebih spesifik ).

Selain itu, jika Anda mencoba menggabungkan atau berinteraksi dengan kode C++, Anda tidak dapat melakukannya langsung dari Swift. Anda harus menyiapkan antarmuka awal dengan ObjC atau C untuk kode C++, lalu menjembataninya ke Swift. Tidak terlalu menyenangkan sama sekali, tapi untungnya kasus penggunaan ini tidak seumum menjembatani ObjC (terutama) atau C.

... dan sesuai dengan manfaatnya, kecuali Anda memerlukan Core Audio tingkat rendah karena alasan tertentu (tentu saja, seperti mem-porting aplikasi yang sudah Anda miliki), AVAudioEngine (iOS8+) jadi jauh lebih sederhana untuk penggunaan apa pun yang dapat diterapkan kasus daripada Core Audio, dan sudah tersedia di Swift.

person greymouser    schedule 18.11.2014
comment
…untuk kasus penggunaan apa pun yang berlaku. Ya, hampir semua kasus. Namun ada beberapa hal yang AVAudioEngine masih belum dapat lakukan dengan cukup baik, dua tahun setelah komentar ini dibuat. - person Steve Cotner; 18.03.2017