Question

Je suis actuellement en train de travailler sur un NSProxy la sous-classe qui intercepte les messages et de ne jamais les transmet à la personne, mais seulement des procédés eux, de sorte que ces méthodes n'a jamais vraiment exister.Et c'est là le problème, évidemment, le compilateur commence à se plaindre de l'absence de méthode de mise en œuvre et je ne peux pas comprendre comment l'arrêter, l'ajout stub de méthodes de l'interface pour que le compilateur se taire ne fonctionne pas parce que les méthodes sont arbitraires formé et je ne les connais pas à l'avance (pour le rendre un peu plus précis, je vous demande cette projet).

Idéalement, je voudrais indiquer au compilateur qu'il ne faut pas le faire n'importe quelle méthode de vérification pour cette catégorie à tous, mais comme cela semble assez peu probable que je serais aussi heureux #pragma ou de toute autre manière (qui n'inclut pas de fermer le compilateur pour chaque avertissement dans l'ensemble du projet/fichier!)

Était-ce utile?

La solution

Vos instructions de commutation ne sont pas vraiment arbitraire, ils ne pouvaient tout simplement avoir une longueur arbitraire.Pour un grand nombre de longueurs, vous pouvez aller de l'avant et de les déclarer au profit du compilateur (et vous pouvez obtenir la vérification des erreurs, que vous n'auriez pas si vous avez simplement éteint l'avertissement).Par exemple:

typedef void (^ObjCCaseBlock)();

@interface NSObject ()
- (id)switch;
- (void)case:(NSString*)a :(ObjCCaseBlock)b;
- (void)case:(NSString*)a :(ObjCCaseBlock)b case:(NSString*)a :(ObjCCaseBlock)b;
- (void)case:(NSString*)a :(ObjCCaseBlock)b case:(NSString*)a :(ObjCCaseBlock)b case:(NSString*)a :(ObjCCaseBlock)b;
@end

Répétez l'opération pour autant de niveaux que est susceptible de se produire (on peut ajouter des niveaux si jamais tombé sur un problème).C'est un peu fastidieux, mais pas difficile.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top