我向 Apple 提交了一个没有任何源代码的二进制文件。
除了手动检查源代码之外,Apple 如何知道您使用了什么以及您调用了哪些 API?
最佳答案
我知道有 3 种方法。这些只是一些猜测,因为我不在 Apple 审核团队工作。
otool -L
这将列出该应用已链接到的所有库。显然你不应该使用的东西,比如 IOKit 和 WebKit 可以被它检测到。
nm -u
这将列出所有链接的符号。这可以检测到
UITouch._phase
等 Ivar(这可能是导致 rejection of Three20-based apps 过去几个月的原因。)strings
Objective-C 选择器存储在二进制文件的一个特殊区域中,因此 Apple 可以从那里提取内容,并检查您是否使用了一些未记录的 Objective-C 方法,例如 -[UIDevice setOrientation :]
.
由于选择器独立于您发送消息的类,即使您的自定义类定义了与 UIDevice 无关的 -setOrientation:
,也有可能被拒绝。
您可以使用 Erica Sadun's APIKit检测由于私有(private) API(错误警报)导致的潜在拒绝。
(如果您真的真的很想解决这些检查,您可以使用运行时功能,例如
-valueForKey:
; object_getInstanceVariable、object_getIvar 等获取那些私有(private)库、类、方法和 ivars。 )
https://stackoverflow.com/questions/2842357/