Я использую собственное разбиение слов в оболочке; что-то вроде
oIFS="$IFS"
IFS=.
set -- $version
IFS="$oIFS"
, хотя вам нужно быть осторожным с номерами версий в целом из-за алфавитных суффиксов или суффиксов даты и других раздражающих противоречивых битов. После этого позиционные параметры будут установлены на компоненты $version
:
$1 = 1
$2 = 2
$3 = 13
($IFS
- это набор отдельных символов, а не строка, поэтому это не будет работать с мультисимволом разделитель полей, хотя вы можете использовать IFS=.-
для разделения на .
или -
.)
NSDate
и методы timeIntervalSince *
вернут NSTimeInterval
, который является двойным с точностью до миллисекунды. NSTimeInterval
указывается в секундах, но для большей точности он использует двойное значение.
Чтобы рассчитать точность времени в миллисекундах, вы можете:
// Get a current time for where you want to start measuring from
NSDate *date = [NSDate date];
// do work...
// Find elapsed time and convert to milliseconds
// Use (-) modifier to conversion since receiver is earlier than now
double timePassed_ms = [date timeIntervalSinceNow] * -1000.0;
Документация по timeIntervalSinceNow .
Есть много других способов вычислить этот интервал, используя NSDate
, и я бы рекомендовал посмотреть документацию по классу для NSDate
, которая находится в NSDate Class Reference . 1123834]
mach_absolute_time ()
можно использовать для получения точных измерений.
См. http://developer.apple.com/qa/qa2004/qa1398.html
] Также доступен CACurrentMediaTime ()
, который по сути то же самое, но с более простым в использовании интерфейсом.
CFAbsoluteTimeGetCurrent ()
возвращает абсолютное время в виде значения double
, но я не знаю, какова его точность - оно может ] обновляется только каждые дюжину миллисекунд, а то может обновляться каждую микросекунду, я не знаю.