English 中文(简体)
NSMutabledata。 为什么保留比我预期的高出1个。
原标题:NSMutabledata. Why is the retain count 1 higher that I would have expected?
  • 时间:2009-10-17 20:13:20
  •  标签:

我正试图每天花钱,让我去做,并确保我在保留和释放之间保持平衡。

在这方面,我感到迷惑。 我有:

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。

最佳回答

国际清算银行实际上不使用计数作为欺骗性援助。 事实上,它有经验的客观编码员,他们将告诉你不要注意保留计数。 总的来说,担心他们的人是新到目标C的人,他们像你一样感到困惑。

不应对保留罪状感到担忧。 某些东西比你所期望的多,并不一定与你的法典有任何关系,并不一定表明一种ug,而确定哪一种情况的唯一途径是,首先使用一种像你建议的那样的适当的欺骗工具。

在这种特定情况下,有2项是当时保留该物体的正确数字,因为它的设定是保留1的,然后由你的固定方法保留。

问题回答

或许是因为你重新将目标分配到+1和汽车箱中,然后将它交给一个叫作保留的财产,这样加2,原物体是自动释放的,因此它下降到+1。





相关问题
热门标签