Je ne souhaite pas soumettre cette application à l'AppStore. J'ai essayé plusieurs fois mais j'ai rencontré tellement de problèmes 🙁
J'utilise class-dump pour get tous les files d'en-tête de UIKit.framework. Dans la UIApplication.h générée par la class-dump, j'ai vu la méthode que je veux utiliser —- launchApplicationWithIdentifier.
Ensuite, je mets UIApplication.h dans mon projet et l'importe. Comstackr, j'ai beaucoup d'erreur "Redéfinition de l'énumérateur …." car dans le UIKit.framework j'utilise précédent, il y a un autre UIApplication.h. Mais ce file n'a pas la méthode launchApplicationWithIdentifier.
Si je supprime le précédent UIKit.framework et importe le dossier généré par class-dump. Ensuite, il apparaît comme un cadre mais si je le déplie, il est vide.
Ensuite, je veux faire de tous les files d'en-tête générés un file de structure et replace le précédent UIKit.framework. Mais je ne sais pas comment. Comme nous pouvons le voir, sous le directory framework du système, il y a un file qui a le même nom que le framework et qui a une icône 'script shell exécuté'. Comment puis-je faire ce file?
Je suis vraiment confus. Quelqu'un peut me donner un coup de main? Je vous remercie.
Spécifiez simplement les methods privées dans une interface de catégorie au-dessus de l'implémentation de class où vous voulez l'utiliser, comme ceci:
@interface UIApplication (Private) - (BOOL)launchApplicationWithIdentifier:(id)identifier suspended:(BOOL)suspended; @end
N'importez pas le file de vidage de class complet et le lien avec le framework UIKit d'origine.
Vous devez être très prudent lorsque vous utilisez une API privée. Ces methods peuvent changer ou être supprimées dans les futures versions iOS!
Vérifiez si la méthode existe vraiment avec respondsToSelector:
à l'exécution et soyez prêt pour le cas où il n'existe pas.
J'ai utilisé une fonction MapKit secrète dans ma propre application et je savais que les methods privées n'existaient que dans iOS 5. Mon application fonctionne donc dans toutes les versions iOS mais cette fonctionnalité est uniquement disponible dans iOS 5 (Apple supprimé ou modifié dans iOS 6 beta 1).