Ответ 1

Используйте макрос ABS(), который определен в NSObjCRuntime.h, он безопасен для архитектуры.

Ответ 2

Вы можете использовать макрос Foundations ABS():

NSInteger a = 5;
NSInteger b = -5;
NSLog(@"%ld %ld", ABS(a), ABS(b));

Ответ 3

В то время как два опубликованных ответа абсолютно правильны относительно использования макроса ABS(), следует, конечно, отметить, что NSIntegerMin, истинное абсолютное значение которого не может быть представлено как NSInteger, возвращает себя, когда функция ABS() называется.

Предполагая 64-битную систему:

NSLog(@"ld", ABS(NSIntegerMin)); 
// prints: -9223372036854775808

NSLog(@"%ld", ABS(NSIntegerMin + 1)); 
// prints: 9223372036854775807, which == NSIntegerMax

Те же результаты будут происходить в 32-битной системе, но цифры будут +2147483647 и -2147483648