Они делают разные вещи;поэтому вам нужно использовать соответствующий:
Подумайте, если хотите:
NSString *a = @"Hello!";
NSString *b = a;
NSString *c = [a mutableCopy];
if (a == b) NSLog(@"This prints");
if (b == c) NSLog(@"This doesn't");
if ([a isEqual:c]) NSLog(@"This does");
Другими словами;==
просто проверяет, указывают ли два указателя на одно и то же место и, следовательно, являются ли они одним и тем же объектом;isEqual:
проверяет, равны ли два объекта;в этом случае a
и b
- это одна и та же строка, в то время как c
- это новая строка, равная a
, в которой она имеет одинаковые символы в том же порядке;но у него другой класс и другой адрес.
Вы почти всегда захотите использовать isEqual:
для объектов и, если они у него есть, более конкретный компаратор, если они принадлежат одному и тому жеisEqualToString:
, например).
==
с другой стороны, вы, вероятно, должны использовать только для целочисленных типов данных.(Они имеют мало смысла для объектов и меньше для чисел с плавающей запятой.)