在我的iPhone应用程序(iOS7)提交过程中,我看到了屏幕上显示的错误。基本上,它说我使用了非 public 符号__strlcat_chk,strlcpy_chk,我知道strlcat和strlcpy,但是不要认为它可能是非 public 的。
我使用Xcode 5。

我还在项目中进行了strlcat()和strlcpy()的快速搜索,但我没有发现使用它。

不知道可能是什么原因。

[更新]实际上,在通过我的开发人员帐户提交票证后,我实际上从Apple获得了更新(开发人员帐户附带我们都有2个技术支持。)基本上,Apple支持告诉我这是已知问题。告诉苹果您的应用名称和ID号,您的应用将列入白名单。苹果发出Go信号后,提交提交验证过程将毫无问题。

最佳答案

可以在文件中找到其原因:

iOS 7.0 / usr / include / secure / _string.h

引起问题的代码似乎在这里:
#if __has_builtin(__builtin___strlcat_chk) && __HAS_FIXED_CHK_PROTOTYPES #undef strlcat #define strlcat(dest, src, len) \ __builtin___strlcat_chk (dest, src, len, __darwin_obsz (dest)) #endif #endif /* __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 || __MAC_OS_X_VERSION_MIN_REQUIRED >= 1090 /
#endif /
__DARWIN_C_LEVEL >= __DARWIN_C_FULL */

我不确定这是做什么的,但是我猜这是在验证代码时被当作问题来解决的问题。

您可以将其与同一个_string.h文件的iOS 6版本进行比较,并且会看到没有对这两种方法strlcat和strlcpy的引用。

还有一个带有rdar参考的评论:

rdar:// problem / 12622659

底线:这似乎是iOS 7.0 SDK的问题,由Apple对其进行“修复”。

更新:

如果您确实要提交您的应用程序,则只需编辑_string.h文件,将#define __HAS_FIXED_CHK_PROTOTYPES 1编辑为#define __HAS_FIXED_CHK_PROTOTYPES 0

10-07 21:07