Можно ли присвоить значение int типу идентификатора + Цель c - PullRequest
14 голосов
/ 15 октября 2010

Я хочу знать, правильно ли это назначение

id var = 9;

Будет ли переменной var присвоено значение 9, или нам нужно обернуть его в некоторый класс-оболочку, такой как NSNumber?

Ответы [ 3 ]

42 голосов
/ 15 октября 2010

9 - это целочисленный литерал, который не является объектом. id - указатель на объект. Если вам нужно передать целое число как объект (тип id), вы должны обернуть его внутри NSNumber объекта, например:

id var = [NSNumber numberWithInteger: 9];
12 голосов
/ 15 октября 2010

Возможно, но это не правильно:

warning: initialization makes pointer from integer without a cast

id - это указатель на объект, а не целое число.

  • Намерены ли выиспользовать объект, доступный по адресу 9?Вам вряд ли позволят это сделать.
  • Вы просто хотите использовать контейнер id для переноса целого числа?Вместо этого следует использовать NSNumber.
  • Ожидаете ли вы, что в результате задания будет создан объект, содержащий 9?Это не работает так.
2 голосов
/ 07 июня 2015

id var = @9; тоже работает.@9 эквивалентно [NSNumber numberWithInt:9]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...