任何人都可以解释为什么此代码可以完美运行:

int thumbnailPrefix = trunc([newGraph.dateCreated timeIntervalSinceReferenceDate]);

newGraph.thumbnailImageName = [NSString stringWithFormat:@"%d.%@",thumbnailPrefix,@"png"];


但是这段代码会导致访问错误吗?

newGraph.thumbnailImageName = [NSString stringWithFormat:@"%d.%@",trunc([newGraph.dateCreated timeIntervalSinceReferenceDate]),@"png"];

最佳答案

trunc返回double,而不是int

double trunc(double x);


因此,在第一个代码块中,您正在将其转换为int,并正确使用%d格式说明符。

在第二个中,它应该是一个%f,或者在其前面。

newGraph.thumbnailImageName = [NSString stringWithFormat:@"%d.%@",(int)trunc([newGraph.dateCreated timeIntervalSinceReferenceDate]),@"png"];

10-08 07:44