【问题标题】:iOS Simulator in-app browser crashingiOS 模拟器应用内浏览器崩溃
【发布时间】:2023-03-06 10:03:01
【问题描述】:

我正在实现一个基于 Facebook 的应用程序,并在 iOS 模拟器上对其进行测试。当我点击登录 Facebook 按钮时,会出现一个应用内浏览器,然后我输入我的用户名和密码,最后按下登录和权限按钮,但控制台中出现此错误消息:

WebKit discarded an uncaught exception in the
webView:decidePolicyForNavigationAction:request:frame:decisionListener: delegate: 
<NSInvalidArgumentException> *** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]:
attempt to insert nil object from objects[0]

之后屏幕上什么也没有发生,但是当我重新启动我的应用程序时,我已通过 Facebook 身份验证,我可以正常使用我的应用程序了。

我该如何解决这个问题?这会在真实设备上发生吗?

【问题讨论】:

  • iOS 模拟器中发生的任何事情都可能发生在实际设备上;看看那个错误,它几乎肯定会。是否可以在设备上进行测试?
  • 是的,很可能它会发生在真实设备上,因为应用程序正在尝试插入 nil 对象。请尝试验证 nil 对象的属性,就像我在下面建议的那样,看看是否有帮助。谢谢。

标签: ios objective-c ios-simulator


【解决方案1】:

也许您的应用正在尝试将他们的一些 Facebook 数据缓存到您的一个对象中。也许您需要进行nil 验证,然后如果 Facebook 中未设置任何必填字段,您会看到您提到的崩溃。

尝试验证self.userProfile 或其他属性是否为非零。

【讨论】:

  • 我使用了这个示例文件:github.com/fbsamples/ios-howtos/blob/master/… 在 - (void)loginViewShowingLoggedInUser:(FBLoginView *)loginView 方法中,我从超级视图中删除了 loginView。我不知道我应该检查哪个变量:(
  • 您是按原样使用此示例代码,还是进行了任何修改?
  • 在 - (void)loginViewShowingLoggedInUser:(FBLoginView *)loginView 方法中,我从超级视图中删除了 FBLoginView 对象。而且我也不使用像 profilePictureView 这样的附加示例变量。首先这段代码运行良好,但昨天我恢复了模拟器(删除缓存),我登录了 facebook。恢复之前没有错误,因为会话被缓存并且没有使用登录。
【解决方案2】:

最后我解决了问题:我试图在 - (void)loginViewShowingLoggedInUser:(FBLoginView *)loginView 方法中访问用户数据,但是 - (void)loginViewFetchedUserInfo:(FBLoginView *)loginView 没有被调用在第一个之前,因此没有获取用户数据。

【讨论】:

    猜你喜欢
    • 2013-11-30
    • 1970-01-01
    • 2014-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多