iPhone - 使用self.class在另一个类上调用方法

时间:2014-05-21 00:08:14

标签: objective-c methods

Obj-c的新手。

在我的"所有者" class我正在调用一种方法来喂鸟,但是我得到一个错误" No Visible @interface for" NSObject"声明选择器吃了#34;在线:

[self.pet eat];

的main.m

Owner * joe = [[Owner alloc] init];
Bird * joePet = [[Bird alloc] init];
joe.pet = joePet;

Owner.h

#import "Bird.h"

@interface Owner : NSObject 
{

int populationCount;
}

@property NSString *name;
@property NSObject *pet;

-(void)makePetMakeNoise;
-(void)feedPet;

@end

Owner.m

#import "Owner.h"
#import "Bird.h"

-(void)feedPet
{
[self.pet eat];

}

Bird.h

#import <Foundation/Foundation.h>

@interface Bird : NSObject
{
NSString *name;
NSString *noise;
BOOL canMakeNoise;
} 

-(void)makeNoise:(int)howManyTimes;
-(void)eat;

@end

Bird.m

#import "Bird.h"
-(void)eat
{
NSLog(@"%@ is eating...", name);
}

我想做的就是从Owner.m调用eat函数,我该怎么做?

1 个答案:

答案 0 :(得分:1)

首先,它不是错误,它只是一个警告。您的应用程序执行得很好,但编译器警告您可能犯了错误。

如果更改此行,警告将消失:

@property NSObject *pet;

对此:

@property Bird *pet;

通常,您将定义一个类Animal,其中Bird作为其子类。 -eat方法可以在动物类中,也可以在鸟类中。然后你可以这样做:

@property Animal *pet;