2009-08-22 5 views
0

Je travaille actuellement avec le géocodage. Le service de géocodage fonctionne toujours avec les délégués.délégué de l'objectif-c

Alors disons que j'ai un

AskingClass et AnsweringClass (géocodage)

Le AskingClass appelle une fonction dans le AnsweringClass pour retourner l'adresse de l'emplacement actuel.

AnsweringClass doit gérer et encapsuler les données de géocodage. Mon problème est que, avec tous ces délégués, je ne parviens pas à revenir à la fonction originelle, que la classe requérante a appelée. Donc, je ne peux pas donner facilement l'adresse de retour:

AskingClass.Adress = [AnsweringClass giveAdress];

Je l'ai géré, en le faisant avec des délégués, donc le résultat revient dans une fonction de délégué (quelque part) dans la classe de demande. Mais je ne suis pas content de ça. Cela semble surdimensionné et complexe.

meilleures salutations

Klaus-Dieter

Répondre

1

On ne sait pas pourquoi vous utilisez un modèle de délégué du tout. Pourquoi ne pas simplement utiliser des classes droites?

Quelque chose comme ceci (en supposant que vous utilisez un fichier de PCH pour vos fichiers d'en-tête ou autrement « importer em au besoin):

AnsweringClass.h

@interface AnsweringClass:NSObject 
- (MyAnswer *)answerThisDude; 
@end 

AskingClass.h

@class AnsweringClass; // just in case you including AskingClass.h before AnsweringClass.h 
@interface AskingClass : NSObject 
// { 
// declare the ivar if you need support for 32 bit "classic" ABI 
// AnsweringClass *theThingThatAnswers; 
// } 
@property(retain) AnsweringClass *theThingThatAnswers; 
@end 

Ensuite, vous pouvez le faire:

AskingClass.m

@implementation AskingClass 
@synthesize theThingThatAnswers; 
- (void) setUpMyStuff // probably invoked by your designated initializer or app launch handler 
{ 
    self.theThingThatAnswers = [AnsweringClass new]; 
    MyAnswer *theFirstAnswer = [self.theThingThatAnswers answerThisDude]; 
} 

// don't forget a -dealloc if you aren't running GC'd 
@end 

Aucune délégation nécessaire.

+0

N'oubliez pas de libérer le nouvel objet répondeur dans 'setUpMyStuff', si vous n'écrivez pas pour une cible uniquement GC. –

+0

J'ai omis le -dealloc. Laisse moi réparer ça. – bbum

Questions connexes