【发布时间】:2013-05-11 03:35:08
【问题描述】:
这快把我逼疯了……
我使用 Google Maps SDK for iOS 已经有一段时间了(即使是在 App Store 产品中)。 现在,我不能让它在 iOS 模拟器中运行了!不管我尝试运行哪个项目(甚至是 SDK 中的示例代码),它总是会在第一次添加地图时崩溃,例如:
self.view = [GMSMapView mapWithFrame: frame camera: camera];
这是我收到的日志消息:
2013-05-16 10:59:01.047 SDKDemos[939:1303] ADDRESPONSE - ADDING TO MEMORY ONLY: http://dl.google.com/geosdk/latest
2013-05-16 10:59:01.050 SDKDemos[939:1b03] Google Maps SDK for iOS version: 1.2.2.3031
2013-05-16 10:59:01.050 SDKDemos[939:1b03] New version of Google Maps SDK for iOS available: 1.3.0.3430
2013-05-16 10:59:01.111 SDKDemos[939:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil'
我最近在这台 Mac 上尝试了一个防病毒软件,所以一个理论是它可能阻止了一些重要的谷歌地图数据的下载。现在,我已经卸载了这个杀毒软件,删除了 Xcode 的 DerivedData 并重置了 iOS 模拟器,但同样令人失望。
我尝试过的所有项目在我的 iPhone 上运行时都运行良好。我还有另一台 Mac,在模拟器上一切正常。很明显,这台机器一定发生了什么事。
有什么建议吗?
更新
最初,我完全专注于第一条警告消息 (ADDRESPONSE - ADDING TO MEMORY ONLY: http://dl.google.com/geosdk/latest),但我现在意识到,此处提到的 URL 的唯一目的是下载具有最新 SDK 版本号的字符串(当前为“1.3.0.3430 ”)。由于 SDK 然后正确地打印了该字符串进一步向下的两行,我发现该行不太可能与崩溃的真正原因有关。 (我已经相应地更改了这个问题的标题。)
【问题讨论】:
-
这里已经回答了这个问题:stackoverflow.com/questions/12547490/…
-
不。这个答案不能解决我的问题。请注意,这台机器一定有一些特定的缓存问题,因为我在另一台机器上运行完全相同的源代码而没有遇到这个问题。所以我需要一种方法来清除 Xcode(或 iOS 模拟器)在这台机器上使用的所有缓存等。
-
当它崩溃时(在调试版本中)你会得到一个调用堆栈吗?
-
是的,我确实得到了一个调用堆栈。因为我正在旅行,所以我现在还没有拿到它(这是我的 iMac,我遇到了麻烦)。无论如何,模式总是一样的:它在第一个“+mapWithFrame:camera:”方法中崩溃,然后在崩溃之前深入了解大约 10 层内部 Google 方法。最后的错误信息总是在我的问题中显示:
*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil你认为我可以在不访问谷歌源代码的情况下从调用堆栈中得出任何结论吗? -
方法名称可能会透露一些信息。例如,基于code.google.com/p/gmaps-api-issues/issues/detail?id=4752 的调用堆栈,我猜想问题出在OpenGL 上下文中,因此我想出了一个解决方法。但是,崩溃的方法名称可能没有那么有用。
标签: ios xcode macos ios-simulator google-maps-sdk-ios