J'ai un objet NSDate que je l'utilise dans le fil conducteur de mon application iPhone et je référence aussi à partir d'un fil d'arrière-plan, son défini comme ceci:ne peux pas comprendre pourquoi mon objet se deallocated
//header
NSDate *currentDate;
@property (nonatomic, retain) NSDate *currentDate;
//implementation file
@synthesize currentDate;
puis dans mon application, je l'appelle une méthode RefreshData qui passe cet objet à une autre classe d'aide pour obtenir des données d'un service à distance:
- (void) reloadData: (NSInvocationOperation*)operation
{
//...
NSMutableArray *results = [managerHelper refreshForAddress: address
timeFrom: fromDate
timeTo: self.currentDate];
//...
}
(notez l'appel ci-dessus est sur le fil de fond)
maintenant, à côté de cette classe d'aide, j'ai ajouté ces lignes
- (NSMutableArray*) refreshForAddress:(NSString *)address
timeFrom:(NSDate*) fromDate
timeTo:(NSDate*) toDate
{
debugLog(@"retain count: %i", [toDate retainCount]);
NSNumber *toTimeNumber = [[NSNumber alloc] initWithDouble: [toDate timeIntervalSince1970]*1000];
debugLog(@"after retain count log");
}
Mais je reçois l'erreur classique: "*** - [__ NSDate timeIntervalSince1970]: message envoyé à l'instance désallouées 0x71beea0"
Et l'exploitation forestière dit:
MyApp [5487: 7903] conserver le nombre: 2 MyApp [5487: 7903] *** - [__ NSDate timeIntervalSince1970]: message envoyé à l'instance désallouées 0x71beea0
donc, comme vous pouvez le voir le dernier état de log nt ne se fait pas appeler, mais le retainCount est 2, comment cela peut-il être quand je reçois cette erreur la ligne après l'appel de journal?
pouvez-vous nous montrer comment vous initialisez le 'currentDate' varaible? –
comme ceci: self.currentDate = [date NSDate]; – Mark
Ignorer 'retainCount'. Il ne devrait jamais être invoqué, et existe seulement en 2010 pour des raisons héritées. –