Try this:
-(void) test {
CLLocationDistance totalKilometers = 0;
for (int i = 0; i < (self.trackArray.count - 1); i++) // <-- count - 1
{
CLLocation *loc1 = [self cLLocationFromString:[self.trackArray objectAtIndex:i]];
CLLocation *loc2 = [self cLLocationFromString:[self.trackArray objectAtIndex:(i + 1)]];
CLLocationDistance distance = [loc1 distanceFromLocation:loc2];
CLLocationDistance kilometers = distance / 1000.0;
totalKilometers += kilometers;
}
self.distanceString = [NSString stringWithFormat:@"%f", totalKilometers];
}
-(CLLocation*) cLLocationFromString:(NSString*)string
{
NSArray *coordinates = [string componentsSeparatedByString:@","];
CGFloat latitude = [[coordinates objectAtIndex:0] doubleValue];
CGFloat longitude = [[coordinates objectAtIndex:1] doubleValue];
return [[CLLocation alloc] initWithLatitude:latitude longitude:longitude];
}