Обнаружение использования частных 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