我一直在使用genstrings构建字符串文件来国际化我的iPhone应用程序。然而,我最近所做的一些更改导致genstrings工具开始抛出如下错误:
s1075-88:Directory jason$ genstrings -o en.lproj *.m
2011-02-26 16:42:26.941 genstrings[17962:903] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[NSCFString characterAtIndex:]: Range or index out of bounds'
*** Call stack at first throw:
(
0 CoreFoundation 0x00007fff82a267b4 __exceptionPreprocess + 180
1 libobjc.A.dylib 0x00007fff85c640f3 objc_exception_throw + 45
2 CoreFoundation 0x00007fff82a265d7 +[NSException raise:format:arguments:] + 103
3 CoreFoundation 0x00007fff82a26564 +[NSException raise:format:] + 148
4 Foundation 0x00007fff841a65e1 -[NSCFString characterAtIndex:] + 97
5 genstrings 0x0000000100001b9d 0x0 + 4294974365
6 genstrings 0x0000000100003080 0x0 + 4294979712
7 genstrings 0x0000000100003ee6 0x0 + 4294983398
8 genstrings 0x0000000100000d20 0x0 + 4294970656
)是什么导致了这种情况,我如何才能在不手动更改所有内容的情况下找到导致这种情况的项目部分?
发布于 2011-02-27 09:17:20
这里没有简单的技巧。
将所有.m文件复制到单独的文件夹中,然后执行二进制搜索。
在一半的文件上运行genstring,看看有没有问题。找出哪一半的文件有问题,然后再做一次...
这是基因字符串中的一个bug,所以你对它无能为力。
发布于 2012-01-01 18:19:31
您可以使用head限制genstrings处理的文件数量。如果这是用于本地化所有文件的命令:
find . -name \*.m | xargs genstrings -o en.lproj下面是使用head时的外观
find . -name \*.m | head -5 | xargs genstrings -o ~/Documents/GenStringsTest只需增加head旁边的数字,然后反复运行该命令,直到它崩溃。在两次运行之间,可以删除temporary GenStrinsTest文件夹中的文件。当它崩溃时,减少这个数字,直到你现在确定它崩溃的位置,然后运行
find . -name \*.m | head -<minimum number of files for crash>在控制台上写入的最后一个文件将是“错误的”文件。
发布于 2012-02-08 07:22:52
为了防止它对其他人有帮助,我在评论中使用NSLocalizedString时遇到了这个崩溃。我猜它找到了它,而且它没有参数和崩溃
https://stackoverflow.com/questions/5130650
复制相似问题