2009-11-16 14 views
10

Estoy siendo rechazado en App Store por usar variables de instancia privadas en mi aplicación. Los ivars que supuestamente estoy usando definitivamente no se acceden en mi código, pero estoy usando una o dos librerías estáticas de terceros. ¿Cómo probaría si estos podrían ser realmente los delincuentes?Detectando el uso de API privadas

Actualización:

Apple me (y bibliotecas 3 ª parte) de está acusando el uso de variables de instancia privada en la clase UITouch, incluyendo

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

Cómo sobre la sustitución de los terceros libs partido por no ofender los talones y prueba si falla? –

+1

No quiero tener que pasar por 2 ciclos de revisión si puedo hacerlo en uno – nduplessis

Respuesta

1

estoy usando uno o dos librerías estáticas de terceros

contacto los terceros, solicitando explicación, que escribió el código, se debe saber lo que hay allí. Podrían tener un foro o una sección de comentarios, donde otros usuarios ya podrían haber expresado estas preocupaciones, y usted puede buscar respuestas y alternativas.

+0

He hecho ambas cosas, el vendedor niega el uso de las API privadas y no he encontrado ninguna queja similar, pero hubiera todavía me gustaría saber con certeza – nduplessis

5

Puede usar nm para buscar la biblioteca que utiliza el ivar en cuestión.

% nm static_lib.a | grep name_of_ivar 

Si obtiene una línea, creo que con un capital U, con el nombre de la ivar es probable que tenga un sospechoso.

+0

Exactamente lo que estoy buscando, le dará un golpe. Gracias – nduplessis

+0

OK, así que ejecuté nm -a static_lib.a y no parece que muestre ninguna llamada de mensajes a las clases de UIKit, solo muestra algo como esto: U .objc_class_name_NSCharacterSet – nduplessis

+0

He leído su actualización. Se puede acceder a estos vars de una manera lineal, haciendo que los compiladores los diferencien ... así que creo que deberías concentrarte en qué partes usan las cosas de UITouch. es decir, quién usa/define touchesBegin:/touchesMove:/touchesEnd: – epatel

0

Para aquellos que tienen muchas bibliotecas de terceros, puede buscar en su proyecto de tal manera en su ruta del proyecto, por ejemplo, si usted quiere encontrar GraphicsService:

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