이 질문을하는 사람은 매트의 관찰이 최신 페이스 북 인 iphone-sdk에는 적용되지 않는 것으로 보입니다.
+ (FBRequest *)getRequestWithParams:(NSMutableDictionary *) params
httpMethod:(NSString *) httpMethod
delegate:(id<FBRequestDelegate>) delegate
requestURL:(NSString *) url {
FBRequest* request = [[[FBRequest alloc] init] autorelease];
request.delegate = delegate;
request.url = url;
request.httpMethod = httpMethod;
request.params = params;
request.connection = nil;
request.responseText = nil;
그래서 대리인의 메모리 관리는 .H 파일에 다시 속성 선언에 떨어지면 : 매개 변수가 더 이상 명시 적으로 관련 법에 유지되지
@property(nonatomic,assign) id<FBRequestDelegate> delegate;
이것은 충돌이 지금 의미 FBRequest가 완료되기 전에 대리자 객체를 할당 취소 할 수 있으므로 가능합니다.
업데이트 : 가능한 해결 방법이 보류 FBRequests 취소 할 수 있도록 this 질문에 제안
.
업데이트 2 :
대리인이 FBRequest가 완료되기 전에, 당신은 기본적으로 매트이 시사하는 것입니다있는 (대리자를 할당 해제로 활성 FBRequest의 연결을 취소 할 필요가 해제됩니다 경우 충돌을 방지하기 위해 링크 된 질문에서). 그러나 (이것이 새로운 것인지 확실하지 않습니다.) NSURLConnection 속성을 노출하므로 FBRequest에 직접이 작업을 수행 할 수 있습니다.당신이 속성에 FBRequest 개체를 유지한다면, :
self.myRequest = [facebookObj requestWithGraphPath:@"me" andDelegate:self];
당신이 당신의 dealloc에 모든 것을 정리할 수 있습니다 :
- (void)dealloc
{
if(myRequest) {
[[myRequest connection] cancel];
[[myRequest release];
}
...
[super dealloc];
}
요청 객체를
@property (nonatomic, retain) FBRequest *myRequest;
저장 당신은 당신의 전화를 걸 때
물론 응답을 처리 한 후에는 대리자 메서드에서 FBRequest 속성을 해제하고 nil해야합니다.
감사합니다. 내 하루를 저장했습니다. –