Обнаружение использования частных API

Я отклоняюсь в App Store за использование переменных частного экземпляра в своем приложении. Ивары, которых я использую, в моем коде определенно не доступны, но я использую одну или две статические библиотеки от третьих лиц. Как я могу проверить, действительно ли они могут быть нарушителями?

Update:

Apple обвиняет меня (и сторонние библиотеки) использования переменных частного экземпляра в классе UITouch, включая

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

Ответ 1

Я ничего не знаю об обнаружении проблемы, но мы столкнулись с этой проблемой в последнее время; в нашем случае это было вызвано библиотекой Three20. Если вы используете его, см. http://groups.google.com/group/three20/browse_thread/thread/c442af6e39a918b0/2375e7a158ee9d1b для обсуждения/возможных решений.

Ответ 2

Вы можете использовать nm для сканирования, для какой библиотеки используется ivar.

% nm static_lib.a | grep name_of_ivar

Если вы получите строку, я думаю, что с капиталом U, с именем ivar у вас, вероятно, есть подозреваемый.

Ответ 3

Я использую одну или две статические библиотеки от третьих лиц

Свяжитесь с третьими лицами, запросив объяснение, они написали код, они должны знать, что там. У них может быть раздел форума или комментариев, в котором другие пользователи могли бы выразить эти проблемы уже, и вы можете искать ответы и альтернативы.

Ответ 4

Для тех, кто имеет много сторонних библиотек, вы можете проверить свой проект таким образом в своем пути к проекту, например, если вы хотите найти GraphicsService:

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