"checkFiles"메서드에서 방금 NSDocumentDirectory 경로를 검색하고 파일 목록을 요청했습니다.NSFileMananer의 contentsOfDirectoryAtPath 누설
- (void) checkFiles{
NSArray *pathList = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *path = [pathList objectAtIndex:0];
NSArray *dirArray = [myFileManager contentsOfDirectoryAtPath:path error:NULL]; // leak occurs here!
/* .... */
}
-
-
누수 인스트루먼트는 NSFileManager를의 contentsOfDirectoryAtPath 방법에 누수를 감지합니다.
Instruments에서 NSCFString이라는 누출 된 개체를 클릭했을 때의 스택 추적입니다.
0 CoreFoundation __CFAllocatorSystemAllocate
1 CoreFoundation CFAllocatorAllocate
2 CoreFoundation _CFRuntimeCreateInstance
3 CoreFoundation __CFStringCreateImmutableFunnel3
4 CoreFoundation CFStringCreateWithBytes
5 Foundation -[NSFileManager directoryContentsAtPath:matchingExtension:options:keepExtension:error:]
6 Foundation -[NSFileManager contentsOfDirectoryAtPath:error:]
파일 목록이 포함 된 내 UITableView를 업데이트하기 위해 "checkFiles"메서드를 자주 호출하기 때문에이 누수를 피할 수는 없습니다.
이러한 종류의 시스템 누출을 어떻게 해결해야합니까?
감사합니다.
답변 해 주셔서 감사합니다. 실제 누출은 다른 장소에서 발생했지만 동일한 문자열 메모리 주소를 공유했습니다. 내가 한 [myArray addObject : [[dirArray objectAtIndex : 1] copy]] – pnmn
당신이 유용하다는 것을 알게되어 다행입니다. –