次のメソッドを持つ 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 に質問として実際に投稿する前に回答を探していますが、これに遭遇しましたが、舞台裏で何が起こっているのかはまだはっきりしていません。