Может ли значение int присваиваться типу id + Objective c
Я хочу знать, правильно ли это назначение
id var = 9;
Будет ли присвоено значение var 9 или нам нужно обернуть некоторый класс-оболочку, такой как NSNumber?
Ответ 1
Возможно, но это неверно:
warning: initialization makes pointer from integer without a cast
An id - это указатель на объект, а не целое число.
Вы намерены использовать объект, доступный по адресу 9? Вам вряд ли удастся это сделать.
Вы хотите использовать контейнер id для переноса целого числа? Вместо этого вы должны использовать NSNumber.
Ожидаете ли вы, что назначение создаст объект, содержащий 9? Это не работает.
Ответ 2
9 - целочисленный литерал, который не является объектом. id - указатель на объект. Если вам нужно передать целое число как объект (тип id), вы должны обернуть его внутри объекта NSNumber следующим образом:
id var = [NSNumber numberWithInteger: 9];
Ответ 3
id var = @9; работает тоже. @9 эквивалентно [NSNumber numberWithInt:9]