Как я могу вызвать метод из другого класса - PullRequest
0 голосов
/ 05 апреля 2010

У меня возникли проблемы с определением вызова методов , которые есть в других классах

#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

метод CalculateSecretForUser всегда говорит

'MainViewController' может не отвечать на '-calculateSecretForUser: withPassword:'

что я тут не так делаю?

1 Ответ

2 голосов
/ 05 апреля 2010

Ключевое слово "self" означает экземпляр вашего текущего класса. Итак, вы отправляете сообщение calculateSecretForUser:withPassword на MainViewController, которое его не реализует. Вы должны создать экземпляр myNewClass и назвать его:

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

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

    [lblUserMessage setText:usec];
    [usec release];
    [calculator release];
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...