iOS - Warum funktioniert es, wenn ich zwei NSNumbers mit "==" vergleiche?

In meiner App habe ich versehentlich "==" verwendet, als ich zwei @ verglichen habNSNumber Objekte wie folgt:

NSNumber *number1;
NSNumber *number2;

päter, nach diesen Objekten 'int Werte wurden gesetzt, ich habe das versehentlich gemacht:

if (number1 == number2) {
    NSLog(@"THEY'RE EQUAL");
}

Und verwirrenderweise hat es funktioniert! Ich hätte schwören können, dass mir das so beigebracht wurde:

if (number1.intValue == number2.intValue) {
    NSLog(@"THEY'RE EQUAL");
}

Wie wurde "==" zwischen den beiden @ verwendeNSNumber Objekte funktionieren und warum? Bedeutet das, dass es in Ordnung ist, sie auf diese Weise zu vergleichen, oder war es nur ein Zufall, und es ist im Allgemeinen nicht garantiert, dass dies jedes Mal funktioniert? Es hat mich wirklich verwirrt:

Antworten auf die Frage(8)

Ihre Antwort auf die Frage