Arasındaki fark nedir isEqual:
ve isEqualToString:
?
Sınıflar neden geçersiz kılmak yerine isEqualTo * yöntemlerini (NSArray için isEqualToArray, NSData için isEqualToData, ...) ekliyor isEqual:
?
Arasındaki fark nedir isEqual:
ve isEqualToString:
?
Sınıflar neden geçersiz kılmak yerine isEqualTo * yöntemlerini (NSArray için isEqualToArray, NSData için isEqualToData, ...) ekliyor isEqual:
?
Yanıtlar:
isEqual:
bir dizeyi bir nesneyle karşılaştırır NO
ve nesne bir dizge değilse geri döner . belgelerde belirtildiği isEqualToString:
gibi, her iki nesnenin de dize olduğunu biliyorsanız daha hızlıdır :
Özel Hususlar
Her iki nesnenin de dize olduğunu bildiğinizde, bu yöntem eşitliği kontrol etmenin daha hızlı bir yoludur
isEqual:
.
isEqualTo<Class>
eşitlik için belirli kontroller sağlamak için kullanılır. Örneğin; isEqualToArray:
dizilerin eşit sayıda nesne içerdiğini ve belirli bir dizindeki nesnelerin test YES
için geri döndüğünü kontrol eder isEqual:
.
Ayrıca, kendi yöntemlerinizi -isEqual:
ve -isEqualTo<Class>:
yöntemlerinizi yazmak için , kural nil argümanlara izin vermek ve nil argümanlar için -isEqual:
bir istisna oluşturmaktır.-isEqualTo<Class>:
@Abizern ve @Jonathan Dann yanıtlara genişletilmesi, hem isEqual
ve isEqualToString
birlikte çalışma nil
değerlerinin.
- (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");
}
Ben çok tavsiye bu . İsEqualToString'in performans avantajları temelde çoğu uygulama için ihmal edilebilir düzeydedir. Ancak yazarın bahsettiği iki fark daha var:
nil
halledilir