我的应用程序有一个按钮,当被点击时,获取手机的当前位置并将CLLocation对象的时间戳(NSString)附加到另一个字符串。
用户第一次使用该应用并调用此方法时,应用崩溃了:
'NSInvalidArgumentException',原因:' * - [__ NSCFConstantString sringByAppendingString:]:nil参数'
我可以理解,因为应用程序还没有使用位置服务的权限,时间戳仍为零。
同时,在应用程序崩溃后,系统会要求用户提供权限,一旦用户授予应用程序使用位置服务的权限,此问题就会消失。
如何阻止应用首次崩溃? 如果[locationManager authorizationStatus]!=授权,我试图在viewWillLoad中获取当前位置,但只会立即显示请求权限的通知。
感谢您的帮助!!
答案 0 :(得分:1)
要确保在有可能引发异常的情况下使用nil
,您可以非常简单地检查无效:
if(stringToAppend) {
// Do something with the string
}
这样,如果对象为nil,则不会执行有风险的代码,应用程序也不会崩溃。