不兼容的指针类型将'Class'发送到'NSDate *'类型的参数

时间:2012-10-26 05:49:12

标签: objective-c casting objective-c-category

我有一个NSDate类别,其中包含以下方法

@implementation NSDate (DateUtility)

+(NSString *)dateTimeStringForDB {
    NSDateFormatter *dateFormatForDB = [[NSDateFormatter alloc] init];
    [dateFormatForDB setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    NSString *aDateStr= [dateFormatForDB stringFromDate:self];
    [dateFormatForDB release];
    return aDateStr;    
}
@end

根据这个定义,我收到警告。

不兼容的指针类型将'Class'发送到'NSDate *'类型的参数

但是,在将其指定为参数之前输入self会禁止此警告。

+(NSString *)dateTimeStringForDB
{
    NSDateFormatter *dateFormatForDB = [[NSDateFormatter alloc] init];
    [dateFormatForDB setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    NSString *aDateStr= [dateFormatForDB stringFromDate:(NSDate*)self];
    [dateFormatForDB release];
    return aDateStr;    
}

我们真的不能将自己作为一个类别中的参数传递而不进行类型转换吗?编译器依赖于什么功能?在实际上将其作为问题发布之前寻找答案我遇到了this,但是我仍然不清楚幕后背后是什么。

1 个答案:

答案 0 :(得分:6)

你已经创建了一个类方法,我怀疑你真的想要一个实例方法。我假设您要将NSDate(即对象)的实例转换为NSString表示形式。目前,您正尝试将实际的NSDate类转换为NSString表示形式。

更改

+(NSString *)dateTimeStringForDB {

-(NSString *)dateTimeStringForDB {