Apa perbedaan antara isEqual:
dan isEqualToString:
?
Mengapa kelas menambahkan metode isEqualTo * (isEqualToArray untuk NSArray, isEqualToData untuk NSData, ...) alih-alih hanya menimpa isEqual:
?
Apa perbedaan antara isEqual:
dan isEqualToString:
?
Mengapa kelas menambahkan metode isEqualTo * (isEqualToArray untuk NSArray, isEqualToData untuk NSData, ...) alih-alih hanya menimpa isEqual:
?
Jawaban:
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>:
Memperluas jawaban @Abizern dan @Jonathan Dann, keduanya isEqual
dan isEqualToString
bekerja dengan nil
nilai.
- (void)testStringEqual {
NSString *string = nil;
STAssertFalse([string isEqual:@"test"], @"NSString isEqual");
STAssertFalse([string isEqualToString:@"test"], @"NSString isEqualToString");
// Note that these both return NO
STAssertFalse([string isEqual:nil], @"NSString isEqual");
STAssertFalse([string isEqualToString:nil], @"NSString isEqualToString");
string = @"test";
STAssertTrue([string isEqual:@"test"], @"NSString isEqual");
STAssertTrue([string isEqualToString:@"test"], @"NSString isEqualToString");
STAssertFalse([string isEqual:nil], @"NSString isEqual");
STAssertFalse([string isEqualToString:nil], @"NSString isEqualToString");
}
Saya sangat merekomendasikan ini . Manfaat kinerja isEqualToString pada dasarnya dapat diabaikan untuk sebagian besar aplikasi. Tetapi ada dua perbedaan lain yang disebutkan penulis:
nil
ditangani