i fühlen, wie Speicherverlust in dem nächsten Code mitNSData subdataWithRange Frage
while([outData length] + ptr[currentPacket].mDataByteSize < inBytesToGet && currentPacket < packetsCount)
{
NSLog(@" ++> %d", [aData retainCount]) ;
NSInteger sO = ptr[currentPacket].mStartOffset ;
NSInteger dS = ptr[currentPacket].mDataByteSize ;
NSLog(@" get: cP: %d tP: %d mStartOffset: %d mDataByteSize: %d", currentPacket, packetsCount, sO, dS) ;
NSData *copyRange = [aData subdataWithRange: NSMakeRange(sO,dS)] ;
NSLog(@" => %d", [aData retainCount]) ;
[outData appendData:copyRange] ;
ptr[currentPacket].mStartOffset = bytesFilled + inOffset ;
[outPackets appendBytes: &ptr[currentPacket] length: sizeof(AudioStreamPacketDescription)] ;
currentPacket++ ;
bytesFilled += dS ;
}
in jeder Iteration ADATA die NSData Klasse erhöht seine RetainCount von 1 ist, und es happenes nach [ADATA subdataWithRange: NSMakeRange (sO, Ds) ] Anruf ... ich kann nicht verstehen warum.
"so lange, wie es sich ausgleicht, behält und freigibt" Und es ist erwähnenswert, dass 'autorelease' als" richtig "gilt, aber nicht sofort in' retainCount' auftaucht. '[[[[[[[foo behalten] Autorelease] behalten] Autorelease] behalten] Autorelease] behalten] Autorelease] retainCount]' ist 4. –
Nun, ich sollte sagen, was auch immer es war plus 4. –