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函数,我该怎么做?
答案 0 :(得分:1)
首先,它不是错误,它只是一个警告。您的应用程序执行得很好,但编译器警告您可能犯了错误。
如果更改此行,警告将消失:
@property NSObject *pet;
对此:
@property Bird *pet;
通常,您将定义一个类Animal
,其中Bird
作为其子类。 -eat
方法可以在动物类中,也可以在鸟类中。然后你可以这样做:
@property Animal *pet;