Saya mencoba mengubah kode sumber proyek saya dari Swift 3 ke Swift 4. Satu peringatan yang diberikan Xcode kepada saya adalah tentang penyeleksi saya.
Misalnya, saya menambahkan target ke tombol menggunakan pemilih biasa seperti ini:
button.addTarget(self, action: #selector(self.myAction), for: .touchUpInside)
Ini peringatan yang ditunjukkannya:
Argumen '#selector' merujuk ke metode instance 'myAction ()' di 'ViewController' yang bergantung pada inferensi atribut '@objc' yang tidak digunakan lagi dalam Swift 4
Tambahkan '@objc' untuk mengekspos metode instance ini ke Objective-C
Sekarang, menekan Fix
pada pesan kesalahan melakukan ini untuk fungsi saya:
// before
func myAction() { /* ... */ }
// after
@objc func myAction() { /* ... */ }
Saya tidak benar-benar ingin mengubah nama semua fungsi saya untuk memasukkan @objc
tanda dan saya berasumsi itu tidak perlu.
Bagaimana cara menulis ulang pemilih untuk mengatasi penghinaan?
Pertanyaan terkait:
@objc
? Itu agak menjengkelkan, tapi saya biasanya membuat fungsi-fungsi ini pribadi, mengharuskan saya untuk menandainya sebagai @objc
anyways.
@objcMembers
untuk mengekspos semua anggota yang kompatibel dengan Obj-C ke Obj-C, tetapi saya tidak akan menyarankan itu kecuali Anda benar-benar membutuhkan seluruh kelas Anda untuk diekspos.
@objc
yang sekarang diperlukan dalam rangka untuk mengekspos mereka untuk obj-C, dan karena itu digunakan dengan pemilih.