Objective c 为什么我在方法调用中得到的是超类而不是子类?

Objective c 为什么我在方法调用中得到的是超类而不是子类?,objective-c,subclass,Objective C,Subclass,我有一个类,它是C#抽象类的一个端口;这是.h文件: @interface Schedule : NSObject { } @property (strong, nonatomic) NSDate *apptStartTime; @property (strong, nonatomic) NSDate *apptEndTime; @property (strong, nonatomic) NSString *key; -(BOOL) occursOnDate: (NSDate *) ti

我有一个类,它是C#抽象类的一个端口;这是.h文件:

@interface Schedule : NSObject  {

}

@property (strong, nonatomic) NSDate *apptStartTime;
@property (strong, nonatomic) NSDate *apptEndTime;
@property (strong, nonatomic) NSString *key;

-(BOOL) occursOnDate: (NSDate *) timeOfAppointment;

@end
@interface SingleSchedule : Schedule  {

}

@property (strong,nonatomic) NSDate *apptDate;

-(BOOL) occursOnDate: (NSDate *)date;

@end
这是计划的.m文件:

@implementation Schedule  {

}

@synthesize apptStartTime;
@synthesize apptEndTime;
@synthesize key;

/**

The OccursOnDate method is abstract and must be implemented by subclasses. When     passed a date, the schedulers must determine if an appointment falls on that date. If one does, the method should return true. If not, the method returns false.

*/

-(BOOL) occursOnDate: (NSDate *) dateOfAppointment  {

    return YES:
}
因为它是一个C#抽象类,所以必须重写(或子类化),我在这里已经做过(这是.h文件):

这是.m文件:

@implementation SingleSchedule  {

}

@synthesize apptDate; 

-(BOOL) occursOnDate: (NSDate *)date  {

    return (apptDate == date);  //  <--------- TODO   where is apptDate set?
}
@实施计划{
}
@合成阿普特酯;
-(BOOL)发生日期:(NSDate*)日期{

return(apptDate==date);//调用基类实现是因为
sc
的类型是
Schedule
,而不是
SingleSchedule
。实例化类时,新对象知道它自己的实现和基类链,但对象不知道它继承的类

也许你想要的是:

SingleSchedule *sc = [[SingleSchedule alloc]init];

调用基类实现是因为
sc
的类型是
Schedule
,而不是
SingleSchedule
。实例化类时,新对象知道它自己的实现及其基类链,但对象不知道它继承的类

也许你想要的是:

SingleSchedule *sc = [[SingleSchedule alloc]init];

调用基类实现是因为
sc
的类型是
Schedule
,而不是
SingleSchedule
。实例化类时,新对象知道它自己的实现及其基类链,但对象不知道它继承的类

也许你想要的是:

SingleSchedule *sc = [[SingleSchedule alloc]init];

调用基类实现是因为
sc
的类型是
Schedule
,而不是
SingleSchedule
。实例化类时,新对象知道它自己的实现及其基类链,但对象不知道它继承的类

也许你想要的是:

SingleSchedule *sc = [[SingleSchedule alloc]init];

老鼠!我有,但出于某种原因它仍然不起作用…它现在起作用…谢谢你的帮助。德拉茨!我有,但出于某种原因它仍然不起作用…它现在起作用…谢谢你的帮助。德拉茨!我有,但出于某种原因它仍然不起作用…它现在起作用…谢谢你的帮助。德拉茨!我有,但由于某种原因,它仍然不起作用……它现在起作用了……谢谢你的帮助。:D