无法过去[FBAppCall handleDidBecomeActive]

时间:2013-07-26 16:13:38

标签: facebook facebook-ios-sdk

我正在尝试将FB集成到现有的iOS应用中。

我已修改HelloFacebookSample应用以使用我的应用ID,显示名称和包标识符。我可以运行它并从它发布就好(在iOS 6模拟器中运行)。所以这让我相信我在developers.facebook.com上的设置是正确的。

接下来,我查看了app delegate中的代码并查看了示例中的控制器,并将其复制到我自己的代码中。执行的第一部Facebook代码位于applicationDidBecomeActive:的app委托中。我执行与示例应用程序相同的两行:

[FBAppEvents activateApp];
[FBAppCall handleDidBecomeActive];

如果我运行我的程序,我最终得到EXC_BAD_ACCESS (code=2, address=0x0)。在调试导航器中,我看到:

#0  0x0253309f in objc_msgSend ()
#1  0x0251eb2e in objc_setProperty_non_gc ()
#2  0x0251ed0d in objc_setProperty ()
#3  0x00446798 in -[FBRequestMetadata setCompletionHandler:] at /Users/chrisp/tmp/build-    sdk/ios-sdk/src/FBRequestConnection.m:70
#4  0x004464eb in -[FBRequestMetadata initWithRequest:completionHandler:batchEntryName:] at /Users/chrisp/tmp/build-sdk/ios-sdk/src/FBRequestConnection.m:94
#5  0x00446cb6 in -[FBRequestConnection addRequest:completionHandler:batchEntryName:] at /Users/chrisp/tmp/build-sdk/ios-sdk/src/FBRequestConnection.m:324
#6  0x00446bdb in -[FBRequestConnection addRequest:completionHandler:] at /Users/chrisp/tmp/build-sdk/ios-sdk/src/FBRequestConnection.m:312
#7  0x0044048a in -[FBRequest startWithCompletionHandler:] at /Users/chrisp/tmp/build-sdk/ios-sdk/src/FBRequest.m:149
#8  0x0045ec70 in +[FBUtility fetchAppSettings:callback:] at /Users/chrisp/tmp/build-sdk/ios-sdk/src/FBUtility.m:263
#9  0x0046e06b in +[FBSettings publishInstall:withHandler:isAutoPublish:] at /Users/chrisp/tmp/build-sdk/ios-sdk/src/FBSettings.m:334
#10 0x0046dc0c in +[FBSettings autoPublishInstallImpl:] at /Users/chrisp/tmp/build-sdk/ios-sdk/src/FBSettings.m:217
#11 0x00e27e83 in __NSFireDelayedPerform ()
#12 0x02a9d376 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ ()
#13 0x02a9ce06 in __CFRunLoopDoTimer ()
#14 0x02a84a82 in __CFRunLoopRun ()
#15 0x02a83f44 in CFRunLoopRunSpecific ()
#16 0x02a83e1b in CFRunLoopRunInMode ()
#17 0x0339f7e3 in GSEventRunModal ()
#18 0x0339f668 in GSEventRun ()
#19 0x0120665c in UIApplicationMain ()
#20 0x0000230d in main at /Users/craig/Documents/Projects/MyProject/main.m:14

如果我删除[FBAppCall handleDidBecomeActive],我会得到相同的结果。所以这似乎是[FBAppEvents activateApp]的结果。

如果我删除了[FBAppEvents activateApp],我知道这是可选的,只能拨打[FBAppCall handleDidBecomeActive],我可以启动该应用。但是当我尝试在我的视图控制器中创建FBLoginView的实例时:

FBLoginView * loginview = [[FBLoginView alloc] init];

我得到了同样的错误(EXC_BAD_ACCESS (code=2, address=0x0)):

#0  0x0253309f in objc_msgSend ()
#1  0x0251eb2e in objc_setProperty_non_gc ()
#2  0x0251ed0d in objc_setProperty ()
#3  0x0046d47d in -[FBLoginView setSessionStateHandler:] at /Users/chrisp/tmp/build-sdk/ios-sdk/src/FBLoginView.m:52
#4  0x0046b6f8 in -[FBLoginView initializeBlocks] at /Users/chrisp/tmp/build-sdk/ios-sdk/src/FBLoginView.m:177
#5  0x0046ba1c in -[FBLoginView initialize] at /Users/chrisp/tmp/build-sdk/ios-sdk/src/FBLoginView.m:212
#6  0x0046b432 in -[FBLoginView initWithFrame:] at /Users/chrisp/tmp/build-sdk/ios-sdk/src/FBLoginView.m:119
#7  0x0124528f in -[UIView init] ()
#8  0x0046b252 in -[FBLoginView init] at /Users/chrisp/tmp/build-sdk/ios-sdk/src/FBLoginView.m:80
#9  0x0001c0ea in -[MyViewController postToFacebook:] at /Users/craig/Documents/Projects/MyProject/Classes/MyViewController.mm:8040
#10 0x00015c18 in -[MyViewController copy:to:] at /Users/craig/Documents/Projects/MyProjects/Classes/MyViewController.mm:6624
#11 0x000225ee in -[MyViewController menuItemSelected:] at /Users/craig/Documents/Projects/MyProjects/Classes/MyViewController.mm:10003
#12 0x00e27e83 in __NSFireDelayedPerform ()
#13 0x02a9d376 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ ()
#14 0x02a9ce06 in __CFRunLoopDoTimer ()
#15 0x02a84a82 in __CFRunLoopRun ()
#16 0x02a83f44 in CFRunLoopRunSpecific ()
#17 0x02a83e1b in CFRunLoopRunInMode ()
#18 0x0339f7e3 in GSEventRunModal ()
#19 0x0339f668 in GSEventRun ()
#20 0x0120665c in UIApplicationMain ()
#21 0x0000230d in main at /Users/craig/Documents/Projects/MyProject/main.m:14

不要被我明显没有在FBLoginView中创建viewDidLoad这一事实所迷惑。关键在于,尝试对我的Facebook会话做任何事情的任何事情的第一次调用都以同样的方式失败。看起来它正试图在两种情况下都使用处理程序。相同的代码与示例代码中的MY Facebook标识符,包ID等一起使用,但在我的应用程序中不起作用。我怀疑编译器/链接器设置或我的应用程序和示例之间的一些其他配置差异,但我不知道从哪里开始查看。我看过的所有内容在我的应用和示例之间看起来都是一样的。

我尝试了很多不同的方法来打开Facebook会话并获得我需要的权限,但它们都以同样的方式失败。这可能是一个很好的发布在这里,因为示例工作,但我的应用程序中相同的代码没有。

感谢您的帮助。

编辑:我在构建设置中看到示例应用程序使用ARC。我不。在生命周期的这个阶段,我对于转换一个功能强大的大型应用程序犹豫不决。

0 个答案:

没有答案