iOS错误“初始化'NSTimeInterval *'(又名'double *')

时间:2014-02-05 17:17:50

标签: ios nstimeinterval

我正在尝试获取两个NSDate之间的时间间隔,即previousActivity.stopTimepreviousActivity.startTime。我在这段代码中收到错误:

NSTimeInterval *previousActivityDuration = [previousActivity.stopTime timeIntervalSinceDate:previousActivity.startTime];

以下是错误消息:

"Initializing 'NSTimeInterval *' (aka 'double *') with an expression of incompatible type 'NSTimeInterval' (aka 'double')"

我不明白;如果NSTimeInterval又名'double',那么初始化表达式是如何不兼容的,我该如何修复呢?

非常感谢!

修改

Per @ Rmaddy的评论,我删除了星号。然后我立即在以下行中收到此错误:

Assigning to 'NSNumber *' from incompatible type 'NSTimeInterval' (aka 'double')

这是违规行:

previousActivity.duration = previousActivityDuration;

2 个答案:

答案 0 :(得分:11)

您正在尝试创建一个NSTimeInterval指针变量,但您真正想要的只是一个NSTimeInterval变量。所以删除这样的星号:

NSTimeInterval previousActivityDuration = [previousActivity.stopTime timeIntervalSinceDate:previousActivity.startTime];

您的代码抱怨,因为类型不同。通常我们只使用Objective-C对象的指针,并且只在必要时我们通常使用指针来表示原始类型,例如double s等。

答案 1 :(得分:4)

如果您仔细阅读错误,则可以了解需要更改

NSTimeInterval *previousActivityDuration

NSTimeInterval previousActivityDuration

(删除星号)

如果你cmd +点击NSTimeInterval,你会看到这一行:

typedef double NSTimeInterval;

意味着它只是一个原始的,而不是一个阶级。