0

谁能解释为什么这段代码可以完美运行:

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

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

但是这段代码会导致 Bad Access 错误吗?

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

2 回答 2

2

trunc返回一个double,而不是一个int

double trunc(double x);

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

在第二个中,它应该是一个%f,或者(int)前面有。

newGraph.thumbnailImageName = [NSString stringWithFormat:@"%d.%@",(int)trunc([newGraph.dateCreated timeIntervalSinceReferenceDate]),@"png"];
于 2011-08-22T16:26:22.090 回答
0

您是否尝试过从trunk() 中对返回进行类型转换,例如......

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

这是在黑暗中拍摄,但我希望 NSString 不知道函数 trunc 的返回类型。

于 2011-08-22T16:26:28.630 回答