iOS - Por que funciona quando eu comparo dois NSNumbers com "=="?

No meu aplicativo, usei acidentalmente "==" ao comparar doisNSNumber objetos assim:

NSNumber *number1;
NSNumber *number2;

Mais tarde, depois desses objetos 'int valores foram definidos, eu acidentalmente fiz isso:

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

E, confuso, funcionou! Eu poderia jurar que me ensinaram a fazê-lo desta maneira:

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

Como o uso de "==" entre os doisNSNumber objetos funcionam e por quê? Isso significa que não há problema em compará-los dessa maneira, ou foi apenas um acaso e isso geralmente não é garantido que funcione sempre? Realmente me confundiu :(

questionAnswers(4)

yourAnswerToTheQuestion