NSDate превращается в NSNumber MYSTERY - PullRequest
5 голосов
/ 19 января 2012

Я работаю в iOS 4.3 и iOS 5 с автоматическим подсчетом ссылок. Я объявляю объект NSDate в моем интерфейсе:

NSDate *fingerprintsDate;

Позже я установил, что NSDate - при использовании отладчика и пошагового перехода он получит ожидаемое значение:

fingerprintsDate = [NSDate date];

Наконец, я пытаюсь получить время от даты:

if (fingerprintsDate == nil || [fingerprintsDate timeIntervalSinceNow] > 6)

И вот где происходит сбой с нераспознанным селектором: "2012-01-18 23: 07: 46.662 Netapporter [473: 707] - [NSCFNumber timeIntervalSinceNow]: нераспознанный селектор, отправленный экземпляру 0x194490"

Согласно отладчику, мой дорогой NSDate читает: "fingerprintsDate = (NSCFNumber *) 0x194490 139" - когда я печатаю описание, оно гласит: "{value = +139.0000000000, type = kCFNumberFloat32Type}"

Я больше ничего не делаю с / fingerprintsDate где-нибудь еще в коде - но как-то он превращается в NSNumer ... Есть идеи, как это остановить?

Ответы [ 2 ]

0 голосов
/ 12 марта 2013

Вы отлаживаете с помощью GBD, компилируете с помощью GCC? Может быть связано с моим вопросом: - [NSDate timeIntervalSinceDate:] возвращает очень небольшое число на GCC 4.2, но работает как ожидалось на LLVM-GCC 4.2 на iOS4.3 Simulator

0 голосов
/ 12 марта 2013

[NSDate date] возвращает не сохраненное значение (или слабое, если вы используете дугу), поэтому оно, скорее всего, было выпущено где-то между этим назначением и вызовом [fingerprintsDate timeIntervalSinceNow]. Когда вы присваиваете ему сохраняемое (сильное) свойство, оно сохраняется.

...