我正试图每天花钱,让我去做,并确保我在保留和释放之间保持平衡。
在这方面,我感到迷惑。 我有:
NSMutabledata *_alignmentData
并综合与其相关的财产:
// .h file
@property (nonatomic, retain) NSMutableData *alignmentData;
// .m file
@synthesize alignmentData=_alignmentData;
我开始逐年从服务器中提取数据:
self.connection =
[[[NSURLConnection alloc] initWithRequest:theRequest delegate:self] autorelease];
紧接着,在分配数据缓冲之后,将随后用于破碎的警示:
// This prints 0. Cool.
NSLog(@"BEFORE [_alignmentData retainCount] = %d", [_alignmentData retainCount]);
// Create a place to receive the data that will arrive asynchronously:
self.alignmentData = [NSMutableData data];
// This prints 2. Shouldn t this be 1 ?!?
NSLog(@" AFTER [_alignmentData retainCount] = %d", [_alignmentData retainCount]);
在上述自我分配之后,火上首当其冲,使问题复杂化。 一致性 数据,我再次检查保留:
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
// This prints 1.
NSLog(@"[_alignmentData retainCount] = %d", [_alignmentData retainCount]);
[self.alignmentData setLength:0];
}
因此,保留额似乎从0降至1。 谁能向我解释,这怎么可能?
注:我被告知不要把计数作为欺骗性援助,但这根本不适用于非垃圾收集的语言,如目标C。