2009-07-14 3 views
0

J'ai récemment commencé à compiler mon application iPhone contre le système d'exploitation 3.0. L'application a bien fonctionné quand compilé 2.2.1 Cependant, la compilation contre 3.0 donne l'avertissement suivant:Erreur étrange pour UIActionSheets lors de la compilation sur iPhone OS OS

avertissement: type 'id ' ne conforme au protocole 'UIActionSheetDelegate'

Cela se produit sur la deuxième ligne de l'extrait de code suivant qui se trouve dans la classe de délégué de mon application. Je ne suis pas sûr d'où vient cette erreur car elle n'apparaissait pas lors de la construction par rapport aux anciens SDK. Comme autre indice ou élément de preuve, lors de l'exécution de l'application, aucune feuille d'action n'apparaît et le choix par défaut de mes feuilles d'actions est automatiquement sélectionné. Je ne sais pas si cela est lié, mais cela ressemble à un peu plus d'une coïncidence.

Des idées ce qui se passe ici?

Répondre

1

Vous avez une erreur flagrante sur cette ligne:

UIApplication* app = [[UIApplication sharedApplication] delegate]; 

Vous obtenez une instance de UIApplication, demandant son délégué, puis en essayant d'assigner le délégué en un pointeur UIApplication.

Il devrait être:

id<UIApplicationDelegate> app = [[UIApplication sharedApplication] delegate]; 

Je ne suis pas sûr que ça va exactement réparer votre erreur, mais il est sûr de ne pas corriger la façon dont vous l'avez. =)

+0

Duhh! Super qui l'a réparé! Mon erreur ActionSheet était quelque chose d'entièrement différent. Par curiosité, l'avertissement mentionné UIActionSheetDelegate - savez-vous pourquoi? – aloo

+0

@aloo La méthode -delegate renvoie un identifiant, et le premier protocole implémenté par UIApplication est UIActionSheetDelegate. Comme id n'implémente pas ce protocole, il vous donnait une erreur. (C'est une supposition, mais je suis assez sûr que c'est vrai) –

+0

* Je suis presque sûr d'avoir raison. (Je souhaite que nous puissions éditer les commentaires ...) –

Questions connexes