iPhone 应用程序在请求定位服务权限时崩溃

Posted

技术标签:

【中文标题】iPhone 应用程序在请求定位服务权限时崩溃【英文标题】:iPhone app crashes when asking for Location Services permission 【发布时间】:2012-07-31 02:38:03 【问题描述】:

我的应用有一个按钮,当点击该按钮时,它会获取手机的当前位置并将 CLLocation 对象的时间戳 (NSString) 附加到另一个字符串。

用户第一次使用应用并调用该方法,应用崩溃:

'NSInvalidArgumentException',原因:'* -[__NSCFConstantString sringByAppendingString:]: nil argument'

我可以理解,因为该应用还没有使用位置服务的权限,并且时间戳仍然为零。

同时,应用崩溃后,会向用户请求权限,一旦用户授予应用使用定位服务的权限,此问题就会消失。

如何阻止应用程序第一次崩溃? 如果 [locationManager authorizationStatus] != 已授权,我已尝试在 viewWillLoad 中获取当前位置,但请求许可的通知只会立即出现。

感谢您的帮助!!

【问题讨论】:

【参考方案1】:

为了确保在有引发异常的风险时使用nil,您可以非常简单地检查是否为空:

if(stringToAppend) 
    // Do something with the string

这样,如果对象为 nil,则不会执行有风险的代码,应用程序也不会崩溃。

【讨论】:

以上是关于iPhone 应用程序在请求定位服务权限时崩溃的主要内容,如果未能解决你的问题,请参考以下文章

请求权限/Android Studio 时应用程序崩溃

尝试在服务启动但应用程序崩溃时调用位置权限

设备和模拟器上的调试工作时,临时 iPhone SIGSEGV 崩溃

由于缺少权限请求,应用程序崩溃 [重复]

应用程序在请求 READ_PHONE_STATE 权限时崩溃并出现 IllegalStateException

应用程序因缺少权限请求而崩溃[重复]