我有我在我的iPhone應用程序的主線程中使用,我也從後臺線程,它的定義是這樣引用它一個NSDate對象:想不通爲什麼我的目標是得到釋放
//header
NSDate *currentDate;
@property (nonatomic, retain) NSDate *currentDate;
//implementation file
@synthesize currentDate;
然後,在我的應用程序,我把它傳遞該對象到另一個助手類refreshData方法來獲得來自遠程服務的一些數據:
- (void) reloadData: (NSInvocationOperation*)operation
{
//...
NSMutableArray *results = [managerHelper refreshForAddress: address
timeFrom: fromDate
timeTo: self.currentDate];
//...
}
(注意上面的調用是在後臺線程)
現在,在一側的輔助類,我已經添加了這些行
- (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");
}
,但我得到了經典的錯誤: 「*** - [__ NSDate的timeIntervalSince1970]:發送到釋放實例0x71beea0消息」
而且記錄說:
MyApp的[5487:7903]保持數:2 MyApp的[5487:7903] *** - [__ NSDate的timeIntervalSince1970]:消息發送到釋放實例0x71beea0
所以,你可以看到最後的日誌狀態nt不會被調用,但retainCount是2,如何在日誌調用後出現錯誤時發生這種情況?
你能告訴我們,你如何初始化'currentDate'變量? – 2010-08-30 06:21:07
像這樣:self.currentDate = [NSDate date]; – Mark 2010-08-30 06:26:46
忽略'retainCount'。它永遠不應該被依賴,並且只存在於2010年,因爲遺留原因。 – 2010-08-30 06:32:57