+(void)setup {
UIImage* spriteSheet = [UIImage imageNamed:@"mySpriteSheet.png"];
CGRect rect;
animation = [NSMutableArray arrayWithCapacity:numberOfFramesInSpriteSheet];
int frameCount = 0;
for (int row = 0; row < numberFrameRowsInSpriteSheet; row++) {
for (int col = 0; col < numberFrameColsInSpriteSheet; col++) {
frameCount++;
if (frameCount <= numberOfFramesInSpriteSheet) {
rect = CGRectMake(col*frameHeight, row*frameWidth, frameHeight, frameWidth);
[animation addObject:[UIImage imageWithCGImage:CGImageCreateWithImageInRect(spriteSheet.CGImage, rect)] ];
}
}
}
}
ARC를 사용하는 상태에서 위 코드를 컴파일합니다. 분석 도구는 imageWithCGImage ::가 카운트 +1의 UIImage를 반환하기 때문에 가능한 메모리 누수를보고하고 참조가 손실됩니다. Leaks Instrument는 메모리 누수가 전혀 없다고보고합니다. 여기서 뭐하는거야?ARC로 메모리 누수
또한 ARC는 수동으로 release
을 사용하는 것을 금지하므로 누출을 어떻게 수정합니까?
조언을 제공 할 수있는 사람 덕분입니다.
여기 내 질문에 대한 대답을 참조하십시오. http://stackoverflow.com/questions/6260256/what-kind-of-leaks-does-automatic-reference-counting-in-objective-c-not-prevent/6388601 # 6388601 – BoltClock
"create 규칙은 이름에"create "가있는 모든 C 인터페이스 메소드가 +1 파운데이션 객체를 반환하며 수동으로 릴리스해야한다고 말합니다. - 이런! 당연하지. 감사합니다 CodaFi! 감사! –
@ Z.O. 문제 없어. create 규칙은 실제로는 문서에서 찾기가 조금 어렵지만 Apple의 C-Interface를 다룰 때는 매우 중요합니다. [여기 있습니다] (https://developer.apple.com/library/mac/documentation/CoreFOundation/Conceptual/CFMemoryMgmt/Concepts/Ownership.html#//apple_ref/doc/uid/20001148-103029) (규칙을 얻는다). – CodaFi