¿Busca el "uso" privado de la API?

Por lo tanto, todos sabemos que Apple prohíbe el uso de API privadas o indocumentadas en aplicaciones de iOS. No tengo ningún problema con esto, ya que existen buenas razones técnicas para explicar por qué es una buena idea. Sin embargo, dos veces ahora he rechazado una aplicación por usar API privadas, cuando en realidad no era así. No es difícil: las API privadas incluyen símbolos como connectionState , setThumbnail , setOrder , etc. Cualquier llamada que realice a los methods nombrados como tales se marcará como un uso privado de la API, incluso si el método que se llama es algo que usted mismo ha definido. Para un progtwig que hace algo con conexiones, miniaturas o el order de las cosas, los nombres de methods mencionados anteriormente no son tan improbables. Ser rechazado por esto y tener que cambiar el nombre de un método y volver a enviar lo retrasa todo al less una semana mientras espera una nueva revisión.

Entonces, ¿hay alguna manera, utilizando nm , vertederos de class de los frameworks de iOS, etc. para descubrir por sí mismo si sus nombres de método entran en conflicto con algo allí? De ser así, podríamos tener la posibilidad de corregir esto antes de su lanzamiento y evitar el rechazo innecesario.

Sugiero usar el Escáner de aplicaciones. Analiza su file .app para uso privado del método API. La versión actual no es compatible con las variables de instancia de API privadas, pero podría funcionar en una versión futura.

Atrapará los methods que se han llamado iguales que un método API privado, incluso si tiene su propia implementación. Además, capturará @selectores dentro de los methods (al igual que el corrector automático oficial de iOS).

enlace -> https://github.com/ChimpStudios/App-Scanner

Esto no es exactamente lo que estás buscando, pero Xcode tiene dos opciones de validation que probablemente valga la pena probar.

El primero es una configuration de compilation. No está del todo claro lo que comtesting, la documentation no dice e incluso las conversaciones de la WWDC realmente no fueron elaboradas, pero es potencialmente útil. Mi conjetura es que no comtesting las API privadas.

La segunda opción está en el Organizador. En la vista "Aplicaciones archivadas" puede enviar su aplicación a Apple para su validation. Una vez más, realmente no logran determinar exactamente cuáles son los cheques, pero entiendo que esto se parece más a las testings automatizadas que se ejecutan antes de revisar "manualmente". Mi conjetura es que esto comtesting las llamadas API privadas.

¿Ha intentado activar Validate Build Product en la configuration? Se supone que debe realizar todas las comprobaciones iniciales realizadas en su aplicación durante el process de revisión.

Erica Sadun está trabajando actualmente en algo que ella llama APIKit, que es una utilidad que escanea su código y le advierte proactivamente sobre el uso privado de la API. http://ericasadun.com/2009/12/apikit-goes-beta/#c2

El único problema es que no puedo encontrar nada que ver con eso en ninguna parte. Aparentemente está en beta, pero eso fue anunciado hace 8 meses.

No sé si es o no está realmente disponible, pero es algo que podría ver. ¿Tal vez intente contactarla usted mismo? Erica se cuelga en el canal # iphone-dev en IRC en freenode de vez en cuando, puede que la encuentres allí.

Archiva tu request y valídela. Esto pasa por su aplicación y le dice qué está mal. La historia verdadera, acabo de experimentar yo mismo en libxslt / xml.
+ No pierda su time en AppScanner (desaprobado) y en todo el otool -L etc. (al principio no tiene idea de qué selector está utilizando está mal).