2

次のメソッドを持つ 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

この定義では、警告が表示されます。

タイプ「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;    
}

型キャストせずにカテゴリの引数として self を渡すことは本当にできないのでしょうか? この機能は何、コンパイラに依存していますか? SO に質問として実際に投稿する前に回答を探していますが、これに遭遇ましたが、舞台裏で何が起こっているのかはまだはっきりしていません。

4

1 に答える 1

6

クラス メソッドを作成しました。本当にインスタンス メソッドが必要なのだと思います。NSDateのインスタンス(つまり、オブジェクト) をNSString表現に変換したいと思います。現在、実際のNSDateクラスをNSString表現に変換しようとしています。

変化する

+(NSString *)dateTimeStringForDB {

-(NSString *)dateTimeStringForDB {
于 2012-10-26T05:53:03.303 に答える