Может ли значение 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]