Apa perbedaan antara isEqual:
dan isEqualToString:
?
Mengapa kelas menambahkan metode isEqualTo * (isEqualToArray untuk NSArray, isEqualToData untuk NSData, ...) alih-alih hanya menimpa isEqual:
?
sumber
Apa perbedaan antara isEqual:
dan isEqualToString:
?
Mengapa kelas menambahkan metode isEqualTo * (isEqualToArray untuk NSArray, isEqualToData untuk NSData, ...) alih-alih hanya menimpa isEqual:
?
isEqual:
membandingkan string ke objek, dan akan mengembalikan NO
jika objek tersebut bukan string. isEqualToString:
lebih cepat jika Anda mengetahui kedua objek tersebut adalah string, seperti yang dinyatakan dalam dokumentasi :
Pertimbangan Khusus
Jika Anda mengetahui bahwa kedua objek adalah string, metode ini adalah cara yang lebih cepat untuk memeriksa persamaan daripada
isEqual:
.
isEqualTo<Class>
digunakan untuk memberikan pemeriksaan khusus untuk kesetaraan. Misalnya; isEqualToArray:
memeriksa bahwa array berisi jumlah objek yang sama, dan bahwa objek pada indeks tertentu kembali YES
untuk isEqual:
pengujian.
Selain itu, untuk menulis sendiri
-isEqual:
dan-isEqualTo<Class>:
metode Anda, konvensi adalah mengizinkan nihil argumen untuk-isEqual:
dan memunculkan pengecualian untuk argumen nil untuk-isEqualTo<Class>:
sumber
Dugaan saya adalah ini memberikan sedikit peningkatan kinerja, karena isEqualToString: tidak perlu memeriksa jenis apa yang diteruskan.
sumber
Memperluas jawaban @Abizern dan @Jonathan Dann, keduanya
isEqual
danisEqualToString
bekerja dengannil
nilai.sumber
Saya sangat merekomendasikan ini . Manfaat kinerja isEqualToString pada dasarnya dapat diabaikan untuk sebagian besar aplikasi. Tetapi ada dua perbedaan lain yang disebutkan penulis:
nil
ditanganisumber