Я думаю, что вы хотите сравнить последний объект в массиве со всеми объектами в массиве, но isEqual используется для сравнения для двух типов объектов, а не значений в объектах, как вы можете видеть
NSArray * arr = [_exerciseDocument componentsSeparatedByCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]];
это создаст arr в виде массива строк, означающего, что все объекты имеют тип [класс NSString]
* if (! [[arr lastObject] isEqual: [arr objectAtIndex: i]])
, поскольку все объекты одного типа, isEqual вернет true, поэтому ваш код будет выполняться в другой части из-заотрицание в условии if, поэтому используйте isEqualToString для сравнения строк