Objective-C 'Robot' может не отвечать на '-nothingToDo' - PullRequest
0 голосов
/ 15 февраля 2010

Ребята, у меня есть два класса AppController и Robot.

AppController.h
#import <Cocoa/Cocoa.h>
#import "Robot.h"

@interface AppController : NSObject {

 Robot *myRobot;

}
- (IBAction)initPort:(id)sender;


AppController.m

#import "AppController.h"
@implementation AppController


- (IBAction)initPort:(id)sender
{
 [myRobot nothingDo];
}
@end

Robot.h

#import <Cocoa/Cocoa.h>
@interface Robot : NSObject {

}
-(void)nothingToDo:(id)sender;


Robot.m
#import "Robot.h"

@implementation Robot

-(void)nothingToDo:(id)sender
{
    NSLog(@"bla-bla-bla");
}

Когда я пытаюсь запустить, я вижу, что «Робот» может не отвечать на «-nothingToDo» и - (void) ничто не выполняется. Что не так?

Ответы [ 4 ]

3 голосов
/ 15 февраля 2010

Двоеточия в методе Objective-C значимы. Попробуйте

[myRobot nothingToDo:sender];

вместо.

2 голосов
/ 15 февраля 2010

Вы отправляете сообщение nothingDo, а не nothingToDo (может быть, просто опечатка).

Кроме того, вы забыли параметр sender.

Попробуйте это:

- (IBAction)initPort:(id)sender
{
   [myRobot nothingToDo:sender];
}

Это должно работать при условии, что myRobot является правильно выделенным и инициализированным Robot объектом.

0 голосов
/ 15 февраля 2010

Начните с того, что myRobot ссылается на действительный Robot объект.

0 голосов
/ 15 февраля 2010

При компиляции AppController.m компилятору не известен частный метод -nothingToDo, поскольку он не отображается в Robot.h. Вот почему выдается предупреждение.

На самом деле, этот метод не существует, только -nothingToDo: (обратите внимание, : означает, что необходим аргумент). Вот почему метод не вызывается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...