私の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
基本的機能getAllFriendsはFBの要求を行うと、Facebookの要求デリゲートとしてこのオブジェクトを設定します。デリゲート(self)の関数要求didLoadが呼び出され、変数を使用してデータをgetAllFriends関数に渡します。関数はそれを呼び出したものに返します。
私は、whileループを使用して応答を受け取るまで関数をストールしようとしています。デバッグでは、要求didload関数がfacebookオブジェクトによって呼び出されないことが明確になっています。 whileループを削除すると呼び出されます...したがって、データ要求は成功し、whileループが問題になります。
データが受信されるまで機能を停止する方法があるのだろうかと思っています。私はおそらく何か非常にばかげているので、私はいくつかの助けが必要です!
ありがとうございました