自從將Facebook更新到v4.0.x和最新的Parse庫後,我的應用程序掛起,似乎在嘗試登錄用戶時。使用[PFFVideosUtils initializeFacebookWithApplicationLaunchOptions:launchOptions](semaphore_wait_slow陷阱)從Facebook 4.0.x解析登錄掛起
我的堆棧跟蹤看起來是這樣的:
我有一個非常類似的問題之前,回答在這裏:Parse crash when calling [PFFacebookUtils initializeFacebook] - semaphore_wait_trap
但是,這種解決方案不再有效,因爲它似乎[PFUser currentUser]
已更換與[PFUser(Private) _getCurrentUserWithOptions:]
和[BFTask(Private) waitForResult:withMainThreadWarning:]
它卡住。
在我的應用程序中,我將PFUser分類爲一個名爲MPLUser的類,並覆蓋了用戶方法。不知道這是否與這個問題有關?
+ (MPLUser *)user
{
return (MPLUser *)[PFUser user];
}
一旦這種情況發生,就無法啓動應用程序。不過,我通常會在鎖定開始之前啓動應用程序幾次。它通常發生在崩潰後...
我使用pod'ParseFacebookUtilsV4'並將所有庫更新到最新版本。
UPDATE:
這裏有更多的堆棧跟蹤從另一個線程,那就是看似試圖登錄:
我初始化解析和Facebook以下順序。如果我反向調用,它崩潰:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[self initDefaults];
[self initialiseApplicationSpecifics];
[self setupParseWithOptions:launchOptions];
[self enableCrashReporting];
[self setupIAPs];
//etc...
}
- (void)initialiseApplicationSpecifics
{
[Flurry setCrashReportingEnabled:YES];
[self registerParseSubclasses];
[ParseCrashReporting enable];
[Parse enableLocalDatastore];
#ifdef MPL
[Parse setApplicationId:@"xxxyyy"
clientKey:@"xxxyyy"];
[Flurry startSession:@"xxxyyy"];
#elif MGM
[Parse setApplicationId:@"yyyxxx"
clientKey:@"yyyxxx"];
[Flurry startSession:@"yyyxxx"];
#endif
}
- (void)setupParseWithOptions:(NSDictionary *)launchOptions
{
[PFFacebookUtils initializeFacebookWithApplicationLaunchOptions:launchOptions];
[PFTwitterUtils initializeWithConsumerKey:@"aaaabbbb"
consumerSecret:@"bbbbaaaa"];
[PFAnalytics trackAppOpenedWithLaunchOptions:launchOptions];
}
在掛機時其他線程上發生了什麼? –
我已經用更多的信息更新了這個問題。似乎在其他線程上也發生了很多事情 - Facebook和Parse初始化的東西... – Smikey
您能否添加一個示例程序來模擬我們最後的錯誤情況並進一步調試以瞭解該場景? –