Поиск:

Ответ в темуСоздание новой темы Создание опроса
> NSInteger vs. int... 
:(
    Опции темы
Dimanoss
  Дата 2.9.2013, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 14.10.2010

Репутация: нет
Всего: нет



NSInteger и int: в чём разница и что где лучше применять?

В чём смысл наличия одновременно int и NSInteger?  Только совместимость с С, или же есть какой-то подвох?
PM MAIL   Вверх
Bitter
Дата 2.9.2013, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: 10
Всего: 27



ну это нужно для совместимости кода на разных платформах. Например на 32х битной платформе int имеет разрядность 32 бита, а на 64х битной соответственно 64 бита.
По этому если вы будете программировать с использованием NSInteger, то код будет компилироваться без варнингов на разных платформах. Например Mac OS X 64х битная, а IOS - 32х битная
PM MAIL ICQ Skype   Вверх
Dimanoss
  Дата 2.9.2013, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 14.10.2010

Репутация: нет
Всего: нет



хм... но, тем не менее, - NSInteger и int - разные (для компилятора) типы?  Т.е. - операции без приведения, где один операнд int, а другой - NSInteger, могут ошибку вызвать?
PM MAIL   Вверх
Maksys
Дата 2.9.2013, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Future Splasher
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 15.6.2005
Где: Екатеринбург

Репутация: нет
Всего: 17



Если провалиться в описание типа, то можно увидеть его иплементацию:


Код

#if __LP64__ || (TARGET_OS_EMBEDDED && !TARGET_OS_IPHONE) || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64
typedef long NSInteger;
typedef unsigned long NSUInteger;
#else
typedef int NSInteger;
typedef unsigned int NSUInteger;
#endif



--------------------
 С уважением, BiMaWa™©.
user posted image
user posted image
PM MAIL ICQ Skype GTalk   Вверх
Dimanoss
Дата 2.9.2013, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 14.10.2010

Репутация: нет
Всего: нет



ок.  Наглядно, спасибо.  smile 
PM MAIL   Вверх
Bitter
Дата 2.9.2013, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: 10
Всего: 27



int и NSInteger в IOS - одинаковые типы. Как уже сказал Maksys, это видно из объявления типа. А вот в MAC OS X действительно разные. 
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | iOS | Следующая тема »


 




[ Время генерации скрипта: 0.0410 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.