检测私有API的使用

时间:2009-11-16 07:19:34

标签: iphone objective-c cocoa-touch debugging

我在App Store上被拒绝在我的应用中使用私有实例变量。我应该使用的ivars绝对不能在我的代码中访问,但我使用的是来自第三方的一个或两个静态库。我如何测试这些实际上是否真的是罪犯?

更新

Apple指责我(和第三方库)在UITouch类中使用私有实例变量,包括

  • _locationInWindow
  • _tapCount
  • _previousLocationInWindow
  • _timestamp
  • _touchFlags
  • _phase
  • _window

4 个答案:

答案 0 :(得分:10)

我对检测问题一无所知,但最近我们遇到了这个问题;在我们的例子中,它是由Three20库引起的。如果您正在使用它,请参阅http://groups.google.com/group/three20/browse_thread/thread/c442af6e39a918b0/2375e7a158ee9d1b以获取讨论/可能的解决方案。

答案 1 :(得分:5)

您可以使用nm来扫描哪个库使用了相关的ivar

% nm static_lib.a | grep name_of_ivar

如果你得到一行,我认为使用大写U,名称ivar你可能有疑问。

答案 2 :(得分:1)

  

我正在使用一个或两个静态库   来自第三方

联系第三方,请求解释,他们编写代码,他们必须知道那里有什么。他们可能有一个论坛或评论部分,其他用户可能已经表达过这些问题,您可以寻找答案和替代方案。

答案 3 :(得分:0)

对于拥有许多第三方库的用户,可以在项目路径中以这种方式检查项目,例如,如果要查找GraphicsService

$ find . |grep "\\.a" | xargs grep GraphicsService