拒绝应用程序后解释 nm 输出

Interpreting nm output after rejected app

我的应用程序被 Apple 拒绝了,因为我的应用程序以某种方式使用了私有 API。 Apple 说我的应用使用

框架:'/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation':CFHashBytes

我在代码中找不到任何东西,所以我搜索了 Whosebug 并发现我可以使用 otool 或字符串。

使用字符串我找到两个 "hash" 调用(无论它们在哪里)并使用 nm,我得到以下输出:

纳米运动型\建筑师| grep 哈希

0000000100077490 T __TFO16Sporty_Architect12ActivityTypeg9hashValueSi 0000000100056240 T __TFO16Sporty_Architect12RotationModeg9hashValueSi 0000000100064480 T __TFO16Sporty_Architect13DraggedSliderg9hashValueSi 000000010003e3a0 T __TFO16Sporty_Architect8FileTypeg9hashValueSi 000000010003d91​​0 T __TFO16Sporty_Architect9DateRangeg9hashValueSi 0000000100021360 T __TFO16Sporty_Architect9ModelModeg9hashValueSi 你__TFSig9hashValueSi 00000001000777b0 T __TTWO16Sporty_Architect12ActivityTypes8HashableS_FS1_g9hashValueSi 00000001000562e0 T __TTWO16Sporty_Architect12RotationModes8HashableS_FS1_g9hashValueSi 0000000100064500 T __TTWO16Sporty_Architect13DraggedSliders8HashableS_FS1_g9hashValueSi 000000010003e9d0 T __TTWO16Sporty_Architect8FileTypes8HashableS_FS1_g9hashValueSi 000000010003e080 T __TTWO16Sporty_Architect9DateRanges8HashableS_FS1_g9hashValueSi 0000000100021500 T __TTWO16Sporty_Architect9ModelModes8HashableS_FS1_g9hashValueSi

我觉得U__TFSig9hashValueSi是吧?但现在的问题是……我怎样才能进一步缩小范围?

这超出了我的理解范围,为什么 Apple 提供了一个验证按钮,显示一切正常,一旦应用程序在审查中,它就会因为某些事情而被拒绝,这可以在编译时清楚地检测到(或至少在它运行时)已提交)。

如果您不使用任何外部 API 或框架,CFHashBytes 仅存在于 Swift 框架中。

我有两个应用程序有这个问题。我已将此消息发送到调解中心,现在两者都已获得批准:

“你好,

我认为有错误。唯一包含非 public API 的文件是 libswiftFoundation.dylib,Swift 应用程序中使用的框架。 Xcode 自动使用它。请再次检查。

非常感谢。"

希望对您有所帮助。