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

Rah*_*rma 2 casting objective-c 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
Run Code Online (Sandbox Code Playgroud)

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

不兼容的指针类型将'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;    
}
Run Code Online (Sandbox Code Playgroud)

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

mtt*_*trb 6

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

更改

+(NSString *)dateTimeStringForDB {
Run Code Online (Sandbox Code Playgroud)

-(NSString *)dateTimeStringForDB {
Run Code Online (Sandbox Code Playgroud)