Мне нужно найти разницу между количеством последних тиков и текущим количеством тиков, но
он печатает одно и то же значение каждый раз. Здесь значение таймера не меняется. Что-то не так с кодом ниже?
SystemTimer.m:
#import "SystemTimers.h"
@implementation SystemTimers
-(id)init
{
if (self=[super init]) {
[self Reset];
}
return self;
}
+(unsigned long)GetTickCount
{
return (unsigned long)[NSNumber numberWithLong:[[NSDate date] timeIntervalSince1970] * 1000];
// NSTimeInterval now = [NSDate timeIntervalSinceReferenceDate]*1000;
//return (unsigned long)now;
}
-(unsigned long)Get:(BOOL)bUpdate
{
unsigned long dwTickCount = [SystemTimers GetTickCount];
NSLog(@"dwTickCount:%0.0f",dwTickCount);
if ( bUpdate )
{
if ( dwTickCount < m_dwLastTickCount )
{
m_dwTimer += (dwTickCount - m_dwLastTickCount) + ((unsigned long int)-1);
}
else
{
m_dwTimer += dwTickCount - m_dwLastTickCount;
}
NSLog(@"m_dwTickCount:%0.0f m_dwTimer:%0.0f",m_dwLastTickCount,m_dwTimer);
m_dwLastTickCount = dwTickCount;
}
NSLog(@"m_dwTickCount:%0.0f m_dwTimer:%0.0f",m_dwLastTickCount,m_dwTimer);
return m_dwTimer;
}
-(void)Reset
{
m_dwLastTickCount = [SystemTimers GetTickCount];
m_dwTimer = 0;
}
@end
SystemTimer.h:
#import <Foundation/Foundation.h>
@interface SystemTimers : NSObject {
@private
unsigned long int m_dwLastTickCount;
unsigned long int m_dwTimer;
}
-(id)init;
+(unsigned long)GetTickCount;
-(unsigned long)Get:(BOOL)bUpdate;
-(void)Reset;
@end
main.m:
#import <Foundation/Foundation.h>
#import "SystemTimers.h"
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
SystemTimers* timers = [[SystemTimers alloc]init];
[timers Get:true];
//[timers Reset];
[pool drain];
return 0;
}
Выход:
2011-05-15 09:53:19.422 SystemTimer[341:a0f] dwTickCount:1100976
2011-05-15 09:53:19.424 SystemTimer[341:a0f] m_dwTickCount:1100976 m_dwTimer:1104
2011-05-15 09:53:19.422 SystemTimer[341:a0f] dwTickCount:1100976
2011-05-15 09:53:19.424 SystemTimer[341:a0f] m_dwTickCount:1100976 m_dwTimer:1104
2011-05-15 09:53:19.422 SystemTimer[341:a0f] dwTickCount:1100976
2011-05-15 09:53:19.424 SystemTimer[341:a0f] m_dwTickCount:1100976 m_dwTimer:1104
Я надеюсь, что он печатает адрес каждый раз, а не число тиков. Почему это происходит?