내 iPhone 애플리케이션 용 Objective C에서 Facebook과 상호 작용하는 데 사용하는 클래스가 있습니다.while 루프를 사용하여 데이터를 다시 가져올 때까지 대기
GWFacebook.h
@interface GWFacebook : Facebook <FBRequestDelegate>
{
bool query_running;
NSArray* query_result;
}
- (void)request:(FBRequest *)request didFailWithError:(NSError *)error;
- (void)request:(FBRequest *)request didLoad:(id)result;
- (void)LogIn;
- (NSArray*)getAllFriends;
@end
GWFacebook.m
#import "GWFacebook.h"
@implementation GWFacebook
- (void)request:(FBRequest *)request didLoad:(id)result
{
query_result = result;
query_running = false;
}
- (NSArray*)getAllFriends
{
NSMutableDictionary * params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
@"SELECT first_name, last_name, uid, pic_big FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me()) ORDER BY mutual_friend_count desc",@"query",nil];
query_running = true;
bool localbool = true;
[self requestWithMethodName: @"fql.query" andParams: params andHttpMethod: @"POST" andDelegate: self];
while(localbool)
localbool = query_running;
return query_result;
}
@end
기본적 기능은 FB getAllFriends 요청을 수행하고 북 요청 대리인으로이 개체를 설정한다. 그러면 델리게이트 (self)의 함수 요청 didLoad가 호출되고 변수를 사용하여 데이터를 getAllFriends 함수로 전달한 다음 getAllFriends 함수를 호출하여 변수를 반환합니다.
길고 짧은 것은 응답을 받기 전까지는 함수를 정지시키기 위해 while 루프를 사용하려고합니다. 디버깅에서 request didload 함수가 facebook 객체에 의해 호출되지 않는다는 것이 명백합니다. while 루프를 제거하면 호출됩니다 ... 따라서 데이터 요청이 성공하고 while 루프가 문제가됩니다.
임 데이터가 수신 될 때까지 함수를 멈추는 방법이 있는지 궁금하게 생각하고있다. .. Im 매우 어리석은 무엇인가 그렇게해서 나는 약간의 도움을 필요로한다!
감사