自从将 Facebook 更新到 v4.0.x 和最新的 Parse 库后,我的应用程序似乎在尝试登录用户时挂起。
我的堆栈跟踪如下所示:

我以前有一个非常相似的问题,在这里回答: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' 并将所有库更新到最新版本。
更新:
这是来自另一个线程的更多堆栈跟踪,似乎正在尝试登录:

我按以下顺序初始化 Parse 和 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];
}