You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何NSString的localizedStandardCompare:方法会返回不同结果?

macOS 14 下 localizedStandardCompare: 的异常行为

测试代码

#include <Cocoa/Cocoa.h>
int main()
{
    printf("%ld\n%ld\n",
           [@"A 2" localizedStandardCompare:@"a 10"],
           [@"A 2" localizedStandardCompare:@"a 10"]);
}

编译运行及输出

$ clang++ ./cmp.m -o cmp -ObjC -framework Foundation && ./cmp
-1
1

异常现象

在 macOS 14 系统中,无论搭配 Xcode 15 还是 16 版本,运行上述代码都会出现异常:

  • 首次调用 localizedStandardCompare: 时返回正确结果 -1(符合自然排序逻辑,"A 2" 小于 "a 10")
  • 第二次及后续调用该方法时,错误返回 1,判定 "A 2" 大于 "a 10",且该错误结果会持续保持

环境对比测试结果

在旧版系统中该方法行为符合预期,例如 macOS 10.15/Xcode 12 环境下,两次调用均返回 -1。

多环境测试验证问题仅出现在 macOS 14 系统中,各组合测试结果如下:

macos-12, xcode-14.2:   -1 -1
macos-13, xcode-14.2:   -1 -1
macos-12, xcode-13.1:   -1 -1
macos-13, xcode-14.3.1: -1 -1
macos-14, xcode-16b6:   -1  1
macos-14, xcode-15.4:   -1  1
macos-14, xcode-14.3.1: -1  1

内容的提问来源于stack exchange,提问作者Migun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 15:07:22