Из документации Apple:
При создании 32-разрядных приложений NSInteger представляет собой 32-разрядное целое число.64-разрядное приложение рассматривает NSInteger как 64-разрядное целое число.
#if __LP64__ || TARGET_OS_EMBEDDED || TARGET_OS_IPHONE || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64
typedef long NSInteger;
#else
typedef int NSInteger;
#endif
ОБНОВЛЕНИЕ:
Объясните подробно:
[shoppingListTableView selectedRow]
возвращает NSInteger, и вы создаете 64-битное приложение, так что на самом деле это long
.
. Вы можете использовать long selectedItemIndex
вместо int selectedItemIndex
, чтобы подавить это предупреждение, нопредупреждение появляется снова при сборке 32-битной версии.
Лучшим способом является использование NSInteger selectedItemIndex
, который правильно обрабатывает этот случай.