우리는 사진을 업로드하기 위해 페이스북을 응용 프로그램에 통합했습니다. 이것은 훌륭하게 작동했지만 최근에는 XCode Alloc 도구를 사용하여 메모리 누수를 추적하여 끔찍한 것으로 여겨지는 것을 발견했습니다. 별도의 디스패치 스레드에서 업로드 프로세스를 실행 중입니다. 그런 다음 자동 릴리즈 풀에 페이스 북 업로드 메소드를로드하고 있습니다. 업로드가 호출되면 이미지가 해당 FB 프로파일로 이동합니다. 그러나 NSKeyValueMethodForPattern 업로드가 생성되고 약 500KB를 보유합니다. 그런 다음 큰 이미지 인 [NSConcreteMutableData appendBytes : length] get이 만들어지고 이미지 크기에 따라 약 4.5MB가 소비됩니다. 이 두 가지는 업로드 된 각 이미지에 대해 만들어지며 절대로 방출되지 않습니다! 나는 이것에 대해 상실감이있다. 범인 여기끔찍한 페이스 북의 IOS 통합 메모리 누수
- (FBRequest*)openUrl:(NSString *)url params:(NSMutableDictionary *)params
httpMethod:(NSString *)httpMethod delegate:(id<FBRequestDelegate>)delegate
{
[params setValue:@"json" forKey:@"format"];
[params setValue:kSDK forKey:@"sdk"];
[params setValue:kSDKVersion forKey:@"sdk_version"];
if ([self isSessionValid]) {
[params setValue:self.accessToken forKey:@"access_token"];
}
[_request release];
_request = [[FBRequest getRequestWithParams:params
httpMethod:httpMethod
delegate:delegate
requestURL:url] retain];
[_request connect]; // <<<< SAYING THIS IS 100% cause
return _request;
}
로 아래에 ALLOC 도구 포인트는 우리가 처리하고 이미지를 업로드 할 수있는 스레드 "릴리스"풀을 생성하는 데 사용하는 코드입니다.
backgroundQueue = dispatch_queue_create("com.somecomp.appnameo.bgqueue", NULL);
dispatch_async(backgroundQueue, ^(void) {
NSAutoreleasePool *loopPool = [[NSAutoreleasePool alloc] init];
NSData *imageNSData = [NSData dataWithContentsOfFile:[NSString stringWithFormat:@"%@/%@", docDir, self.fileName]];
UIImage *img = [[UIImage alloc] initWithData:imageNSData];
fbResponse = 0;
//[facebook requestWithGraphPath:@"me" andDelegate:self];
[[delegate facebook] requestWithGraphPath:@"me/permissions" andDelegate:self];
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
//@"Sent From Some APP!", @"name",
self.postTitle, @"caption",
// string, @"description",
img, @"picture",
//@"my photo's caption text here.", @"message",
nil];
[img release];
[[delegate facebook] requestWithMethodName:@"photos.upload"
andParams:params
andHttpMethod:@"POST"
andDelegate:self];
[loopPool drain];
});
내가이 돼지들을 풀어 줄 수있는 다른 방법이 있습니까? 나는이 물건에 초보자가 아니지만 나는 이것으로 패배했다. 어떤 도움이라도 환상적 일 것입니다!
감사합니다. - 짐
언제 FBConnect 코드를 마지막으로 업데이트하셨습니까? github에있는 그 방법을보세요, 167 줄 : https://github.com/facebook/facebook-ios-sdk/blob/master/src/Facebook.m – danh
어제 밤에 코드를 업데이트했고 모든 종류의 재귀가있었습니다. 문제, 내가 바로 재귀 버그로 업데이 트를 찾아 와서. 나는 그 후 5 시간 동안 내 인생을 잃어버린 후 다시 업데이트했다. 여전히 같은 문제가 있습니다. – mejim707