Pertanyaan Kelas diimplementasikan di keduanya. Salah satu dari keduanya akan digunakan


Saya memiliki proyek yang memiliki ketergantungan (diinstal melalui CocoaPods) menggunakan SocketRocket dan telah mengimpor perpustakaan statis dari HeapAnalytics. Rupanya perpustakaan HeapAnalytics sudah menggunakan SocketRocket. Saya tidak mendapatkan kesalahan saat mengkompilasi, tetapi pada saat runtime menerima yang berikut:

Class SRWebSocket is implemented in both [path] and [path].
One of the two will be used. Which one is undefined.

Saya tidak yakin bagaimana cara mengatasinya karena sebagian besar solusi yang pernah saya lihat mengharuskan kompilasi perpustakaan statis sendiri mengubah nama kelas dan semacamnya, dan saya tidak memiliki akses ke sumbernya.

Ada rekomendasi?


32
2018-06-01 19:41


asal


Jawaban:


Saya menulis pesan kesalahan itu!

Ubah nama kelas atau jangan tautkan ke pustaka tersebut.

Bagaimana konfigurasi proyek Anda? Adakah tempat di mana Anda secara eksplisit terhubung dengan SR? Atau apakah itu merupakan produk dari menghubungkan terhadap dua perpustakaan statis yang keduanya sudah termasuk SR?

Jika yang pertama, kemudian berhenti menghubungkan terhadap SR secara langsung dan hanya mewarisi versi yang datang dengan perpustakaan sudah menggunakannya (peringatan: pastikan itu memiliki versi yang benar).

Jika yang terakhir, maka Anda harus memodifikasi salah satu perpustakaan.

• Sebenarnya, saya memodifikasi kesalahan. Ini digunakan untuk menyiratkan bahwa satu atau yang lain akan digunakan. Tapi itu tidak benar-benar terjadi dan perilaku itu berbeda di berbagai platform. Jadi, itu diubah sehingga jauh lebih tepat dalam mengidentifikasi bahwa perilaku itu tidak terdefinisi.


38
2018-06-01 20:16



Dalam kasus saya kesalahan ini muncul ketika saya tidak perlu menambahkan file sumber ke kedua target aplikasi utama saya dan target pengujian saya:

Target Membership with both targets selected

Menghapus target tes dari Target Membership dipecahkan itu:

Target Membership with only one target selected


2
2018-03-02 10:41



Ringkasan:

Kesalahan menunjukkan bahwa simbol / kelas yang sama didefinisikan dua kali.

Larutan:

  • Periksa kerangka yang terhubung untuk melihat apakah ada duplikat. Jika demikian, hapus duplikat
  • Clean build folder (Command + Shift + K)
  • Jika simulator, lalu atur ulang simulator dan coba
  • Jika perangkat, hidupkan ulang perangkat dan coba

Pengalaman saya:

Saya menghadapi masalah yang sama dua kali, setelah itu duplikat kerangka kerja dan waktu lain mengatur ulang simulator membantu.


2
2018-04-13 04:09



Saya memiliki peringatan ini selama lebih dari sebulan, kemudian saya akhirnya mencoba ini dan itu berhasil bagi saya:

  1. Setel ulang itu simulator (Menu: Perangkat Keras -> Hapus semua konten dan pengaturan ...)
  2. Bersih proyek (Command + Shift + K)
  3. Bersih itu membangun folder (Command + Option + Shift + K)
  4. Menjalankan kode di simulator lagi

1
2017-07-19 13:19