Могу ли я использовать NSDecimalNumber в любом месте, где ожидается NSNumber? - PullRequest
3 голосов
/ 14 марта 2010

NSDecimalNumber является подклассом NSNumber, и, насколько я могу судить, он реализует все методы NSNumber, как и ожидалось для экземпляра NSNumber.

Учитывая это, можно ли присвоить NSDecimalNumbers любому коду, который ожидает NSNumber?

Единственной возможной проблемой может быть код, который проверяет, что аргумент является экземпляром NSNumber, но поскольку NSNumber является кластером классов, код, подобный этому, должен будет проверить, что экземпляр является подклассом Экземпляры NSNumber и NSDecimalNumber должны проходить одинаковые тесты.

1 Ответ

7 голосов
/ 14 марта 2010

Да.

Единственной возможной проблемой может быть код, который проверяет, что аргумент является экземпляром NSNumber, но поскольку NSNumber является кластером классов, код, подобный этому, должен будет проверить, что экземпляр является подклассом NSNumber, а экземпляры NSDecimalNumber должны пройти те же испытания.

Вот тут и появляется isKindOfClass:, хотя вы можете предпочесть проверить, отвечает ли объект на сообщение типа integerValue.

...