Sto lavorando in iOS 4.3 & iOS 5 con conteggio automatico dei riferimenti. Dichiaro di un oggetto NSDate nella mia interfaccia:NSDato che si trasforma in NSNumber MYSTERY
NSDate *fingerprintsDate;
Più tardi, ho impostato che NSDate - utilizzando il debugger e intensificare attraverso di essa ha il valore che ci si aspetta:
fingerprintsDate = [NSDate date];
Infine, cerco di ottenere il tempo a partire dalla data:
if (fingerprintsDate == nil || [fingerprintsDate timeIntervalSinceNow] > 6)
ed è lì che si blocca con selettore non riconosciuta: "2012-01-18 23: 07: 46,662 Netapporter [473: 707] - [NSCFNumber timeIntervalSinceNow]: selettore non riconosciuto inviato a esempio 0x194490"
Secondo il debugger, mia cara NSDate legge: "fingerprintsDate = (NSCFNumber *) 0x194490 139" - quando stampo descrizione si legge: "{value = 139,0 miliardi, type = kCFNumberFloat32Type}"
Non sto facendo nient'altro con impronte digitali in nessun altro posto nel codice, ma in qualche modo si sta trasformando in un NSNumer ... Qualche idea su come fermarlo?
Ci deve essere qualche altro codice "in mezzo" che lo sta facendo (vale a dire, scrivere oltre la data). Potresti postare qualche altro codice? – dasblinkenlight
Perché dovresti controllare se la data è pari o superiore a 6? Controllalo per me: if ([[myNum className] isEqualToString: @ "NSCFNumber"]) {NSLog: (@ "è numero)} – CodaFi
Non c'è alcun problema con il codice mostrato qui, ma dopo aver letto il bug potrebbe essere che stai cercando di usare il valore di ritorno del metodo "timeIntervalSinceNow" nella posizione sbagliata (parametro), in realtà "- (NSTimeInterval) timeIntervalSinceNow" restituisce il valore float. – kulss