首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >[NSLocale preferredLanguages]是否返回空?

[NSLocale preferredLanguages]是否返回空?
EN

Stack Overflow用户
提问于 2014-03-19 23:24:29
回答 1查看 1.6K关注 0票数 7

有没有可能[NSLocale preferredLanguages]是空的?

我得到的preferredLanguages如下:

类方法中的NSString* preLang = [[NSLocale preferredLanguages] objectAtIndex:0]

但有时(并不总是)应用程序会在这一行崩溃。

我已经在我的应用程序中多次调用[NSLocale preferredLanguages]。一些在实例方法中,两个在类方法中。

类方法中的这两个方法都随机崩溃。

有什么问题吗?

以下是崩溃日志:

代码语言:javascript
复制
Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_INVALID_ADDRESS at 0x00000000000007d8
Triggered by Thread:  0

Thread 0 Crashed:
0   libobjc.A.dylib                 0x399c0911 realizeClass(objc_class*) + 21
1   libobjc.A.dylib                 0x399c09d7 realizeClass(objc_class*) + 219
2   libobjc.A.dylib                 0x399c2793 lookUpImpOrForward + 71
3   libobjc.A.dylib                 0x399bb027 _class_lookupMethodAndLoadCache3 + 31
4   libobjc.A.dylib                 0x399badf7 _objc_msgSend_uncached + 23
5   CoreFoundation                  0x2f58f607 CFArrayAppendValue + 127
6   CoreFoundation                  0x2f5dc477 CFLocaleCopyPreferredLanguages + 155
7   CoreFoundation                  0x2f5e417d +[NSLocale preferredLanguages] + 5

谢谢

EN

回答 1

Stack Overflow用户

发布于 2015-04-02 22:42:50

问题不在于它返回的不是nil,而是一个空数组。因为NSArray为越界访问抛出了一个异常(而不是它应该为空),所以会发生崩溃。

这将返回nil,而不是崩溃。

替换

代码语言:javascript
复制
[[NSLocale preferredLanguages] objectAtIndex:0]

使用

代码语言:javascript
复制
[[NSLocale preferredLanguages] firstObject]

如果-preferredLanguages返回并且数组为空,那么-firstObject将返回nil,而不是抛出像-objectAtIndex:那样的异常。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22510525

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档