我的应用程序有一个按钮,点击该按钮即可获取手机的当前位置并将 CLLocation 对象的时间戳 (NSString) 附加到另一个字符串。
用户第一次使用应用程序并调用此方法时,应用程序崩溃:
'NSInvalidArgumentException',原因:'* -[__NSCFConstantString sringByAppendingString:]:nil 参数'
我可以理解,因为该应用还没有使用位置服务的权限,并且时间戳仍然为零。
同时,应用崩溃后,会向用户请求许可,一旦用户授予应用使用位置服务的权限,这个问题就消失了。
如何阻止应用程序第一次崩溃? 我尝试在 [locationManagerauthorizationStatus] !=authorized 的情况下获取 viewWillLoad 中的当前位置,但请求权限的通知只会立即出现。
感谢您的帮助!!
最佳答案
为了确保在存在引发异常的风险时使用 nil
,您可以非常简单地检查是否为空:
if(stringToAppend) {
// Do something with the string
}
这样,如果对象为零,有风险的代码将不会被执行,应用程序也不会崩溃。
关于iPhone 应用程序在请求定位服务权限时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11732346/