2012-02-20 36 views
1

有些事情是這樣的:我如何可以比較兩個NSTimeInterval類型的對象

@property (nonatomic,assign) NSTimeInterval *startTime; 

AVAudioPlayer *player; 

而且我想這樣做

if (self.player.currentTime > sub.startTime) { 
    do something... 
} 

我覺得他們都是NSTimeInterval類型的數據,我爲什麼不能做這個?

如果我改變這樣

if (self.player.currentTime > 5) { 
    do something... 
} 

向上代碼它可以工作得很好。

回答

4

NSTimeInterval只是double的typedef。它不是Objective-C對象,因此您應該使用指針作爲屬性,而不是而不是。你應該只使用一個普通的NSTimeInterval

@property (nonatomic) NSTimeInterval startTime; 
+0

一些輔助方法,非常感謝你。 我就這樣修復它。 @property(nonatomic,copy)NSString * startTime; if(self.player.currentTime> [sub.startTime doubleValue]){ do something ... } 然後就完成了。 – 2012-02-20 07:43:21

2

NSTimeInterval聲明如下

typedef double NSTimeInterval; 

您可以實現這樣的

static double NSTimeIntervalEqualCompareThreshold = 0.01; 

NSComparisonResult NSTimeIntervalCompare(NSTimeInterval time1, NSTimeInterval time2) 
{ 
    if (abs(time2 - time1) < NSTimeIntervalEqualCompareThreshold) { 
     return NSOrderedSame; 
    } else if (time1 < time2) { 
     return NSOrderedAscending; 
    } else { 
     return NSOrderedDescending; 
    } 
} 
+1

使用'DBL_EPSILON'代替'NSTimeIntervalEqualCompareThreshold'可能是個好主意。 – Vive 2015-04-20 14:15:07

+0

如果只包裝一個'double',創建類似NSTimeInterval的東西的原因是什麼? – Crashalot 2016-10-16 20:56:47