2012-01-19 23 views
5

Otomatik referans sayma ile birlikte iOS 4.3 & iOS 5'de çalışıyorum. Benim arayüzde bir NSDate nesnesi bildirmek:NSNumber'e dönüştürmek NSNumber MYSTERY

NSDate *fingerprintsDate; 

Daha sonra, NSDate o set - bu değere sahip içinden ben beklediğiniz debugger kullanarak ve adım: Son olarak

fingerprintsDate = [NSDate date]; 

, ben deneyin

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

Ve tanınmayan seçici ile çöküyor orası: tarihten itibaren zaman olsun "2012-01-18 23: 07: 46,662 Netapporter [473: 707] - [NSCFNumber timeIntervalSinceNow]: tanınmayan seçici gönderilen örnek 0x194490"

ayıklayıcıya göre, sevgili NSDate okur: "fingerprintsDate = (NSCFNumber *) 0x194490 139" - Ben okur açıklama yazdırmak: "{value = 139,0000000000, type = kCFNumberFloat32Type}"

Başka bir şey yapmıyorum/parmak izi Kodda başka bir yerde bulun - ama bir şekilde bir NSNumer'a dönüşüyor ... Herhangi bir fikir nasıl durduracak?

+1

Başka bir kod "arasında", bunu yapıyor (yani, tarihinizi yazarak). Biraz daha kod gönderebilir misin? – dasblinkenlight

+0

Neden tarihin sıfır ya da 6'nın üzerinde olduğunu kontrol ettiniz? Bunu benim için şununla kontrol edin: if ([[myNum className] isEqualToString: @ "NSCFNumber"]) {NSLog: (@ "sayıdır)} – CodaFi

+0

Burada gösterilen kodla ilgili bir sorun yok ama hatayı okuduktan sonra rapor, "timeIntervalSinceNow" yönteminin dönüş değeri yanlış yerde (parametre), gerçekte "- (NSTimeInterval) timeIntervalSinceNow" değerini döndürmeye çalıştığınız olabilir. – kulss

cevap

0

[NSDate date] korunmayan bir değer döndürür (ya da ark kullanıyorsanız), bu nedenle büyük olasılıkla bu atama ile [fingerprintsDate timeIntervalSinceNow] arasında bir yerde serbest bırakılır. Alıkoyulmuş (güçlü) bir mülke atadığınızda, korunur.

+0

ARC, yerlileri güçlü kılar. Bence öyle değil. –

İlgili konular