2010-04-05 5 views
0

Je vais avoir une certaine difficulté à comprendre à méthodes d'appel que j'ai dans autres classesComment puis-je appeler une méthode d'autre classe

#import "myNewClass.h" 
#import "MainViewController.h" 

@implementation MainViewController 

@synthesize txtUsername; 
@synthesize txtPassword; 
@synthesize lblUserMessage; 

- (IBAction)calculateSecret { 

NSString *usec = [self calculateSecretForUser:txtUsername.text 
         withPassword:txtPassword.text]; 

    [lblUserMessage setText:usec]; 
    [usec release]; 
} 
... 

myNewClass.h

#import <Foundation/Foundation.h> 

@interface myNewClass : NSObject { 
} 
- (NSString*)CalculateSecretForUser:(NSString *)user withPassword:(NSString *)pwd; 

@end 

myNewClass.m

#import "myNewClass.h" 

@implementation myNewClass 

- (NSString*)CalculateSecretForUser:(NSString *)user withPassword:(NSString *)pwd 
{ 
    NSString *a = [[NSString alloc] initWithFormat:@"%@ -> %@", user, pwd]; 
    return a; 
} 

@end 

la méthode CalculateSecretForUser dit toujours

'MainViewController' ne peut pas répondre à '-calculateSecretForUser: withPassword:'

ce que je fais mal ici?

Répondre

2

Le mot-clé "self" désigne l'instance de votre classe actuelle. Donc, vous envoyez le message calculateSecretForUser:withPassword à MainViewController qui ne l'implémente pas. Vous devez instancier myNewClass et l'appeler:

- (IBAction)calculateSecret { 
    myNewClass *calculator = [[myNewClass alloc] init]; 

    NSString *usec = [calculator calculateSecretForUser:txtUsername.text 
         withPassword:txtPassword.text]; 

    [lblUserMessage setText:usec]; 
    [usec release]; 
    [calculator release]; 
} 
+0

merci beaucoup :) – balexandre

Questions connexes