Арифметика указателя на интерфейс «NSDate», который не является постоянным размером в нехрупком ABI - PullRequest
3 голосов
/ 05 сентября 2011

Есть ошибка в следующем коде obj-c.

if (fabs(originalLocation.timestamp - ((CLLocation *)[lastLocations objectAtIndex:i]).timestamp) > constAverageLocationTimeout) 
{ 
    //do 
}

xCode отправил ошибку:

error: Semantic Issue: Arithmetic on pointer to interface 'NSDate', which is not a constant size in non-fragile ABI

Есть идеи?

1 Ответ

6 голосов
/ 05 сентября 2011

ваша программа (и местоположение ошибки компилятора) будет иметь больше смысла, если вы немного разберетесь с ней. возможно что-то вроде:

NSDate * orginalDate = originalLocation.timestamp;
CLLocation * lastLocation = [lastLocations objectAtIndex:i];
NSDate * lastDate = lastLocation.timestamp;

NSTimeInterval originalTime = [originalDate timeIntervalSinceReferenceDate];
NSTimeInterval lastTime = [lastDate timeIntervalSinceReferenceDate];
NSTimeInterval elapsed = fabs(originalTime - lastTime);

if (elapsed > constAverageLocationTimeout) {
  /* do */
}

, в частности, timestamp - это свойство типа NSDate, а не скалярное число, такое как NSTimeInterval.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...