2015-05-14 20 views

cevap

20

Bir geçici çözüm buldum. Sadece bir ana iplik bloğu içinde sarın. Bir çekicilik gibi çalışacak.

dispatch_async(dispatch_get_main_queue(), ^{ 
    FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:nil]; 

    [request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { 

     if (error) { 
      [source setError:error]; 
      return; 
     } 

     [source setResult:result]; 
    }]; 
}); 
+3

Bu büyük bir düzeltme. Daha fazla vardiya olmalı. Teşekkürler @yuhua! – maxhud

+0

hala hiçbir zaman işleyici bloğu çağırmıyor :( –

+1

Benim için çalıştı.Onun "initWithGraphPath" adını arka plan iş parçacığından çağırıyordu ve görünüşe göre sadece ana iş parçacığından çağrılmalı. –

2

Aynı sorunu çözdük ve aynı çözümü kullandık ama bunun neden olduğunu açıklayan herhangi bir gönderi bulamıyorum.

+1

Şimdi açık kaynak olmalıyız. Neden olursa olsun, zaman kazanıp size geri dönecek olursam tekrar ziyaret edeceğim: –

+0

Teşekkürler! Bana yardımcı olabileceğim veya kendime bakabileceğim bir şey varsa, bu hafta boş zamanım olabilir. . – Constantine

2

Aynı konuyla karşılaştım. PFFacebookUtils'in devam bloğunu farklı bir iş parçacığı üzerinde yürütmekte olduğu anlaşılıyor ancak FBSDKGraphRequest'in ana iş parçacığından başlatılmayı beklediği anlaşılıyor. Sorunun alternatif olarak bir yürütücü belirterek çözülebileceğini buldum.

BFTask* loginTask = [PFFacebookUtils logInInBackgroundWithReadPermissions:@[]]; 
[loginTask continueWithExecutor:[BFExecutor mainThreadExecutor] withSuccessBlock:^id _Nullable(BFTask * _Nonnull task) { 
    FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:nil]; 
    [request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { 
     // This code gets called properly 
    }]; 
}];