代码之家  ›  专栏  ›  技术社区  ›  Steve

新nsstring substringwithrange:错误消息

  •  0
  • Steve  · 技术社区  · 16 年前

    iOS 4出现了一个有趣的新错误:

    -[NSCFString substringWithRange:]: Invalid range {11, 4294967295}; this will become an exception for apps linked on SnowLeopard. Warning shown once per app execution.

    这个错误是由我从一篇帮助标题大小写字符串的博客文章中得到的一小段代码引起的,这并不难修复,但我在其他任何地方都没有看到这一点,我假设苹果希望人们停止使用神奇的4294967295数字。

    有人知道这一变化的历史/背景吗?

    编辑:标题案例代码的源位于: http://vengefulcow.com/titlecase/ 这是目标C端口(显然)。第116行是罪犯。显然,这只是在某些特定条件下的问题。我还在追踪。

    1 回复  |  直到 16 年前
        1
  •  1
  •   bbum    16 年前

    无符号4294967295与-1的有符号uint32_t值相同。我见过一个32位的应用程序存档-1和64位的应用程序未存档为一个大屁股(当它是xcode调用时非常有趣) malloc(4294967295) 在64位调高过程中)。

    Cocoa框架正在检测您在长度大于字符串本身的范围内传递的内容。现在发出警告,结果被截断,但将来这将是一个很难的错误。

    (在某些情况下,nsnotfound会导致此类问题)。