Быстрый вопрос: возможно ли передать NSInteger в объект NSNumber? Мне нужно преобразовать тег объекта UIImageView в объект NSNumber, потому что мне нужно передать его как аргумент функции.Можно ли указать NSInteger для NSNumber?
ответ
Вы не можете листинг это потому, что NSInteger
не является объектом, просто псевдонимом для встроенного типа. Вы всегда можете создать новый объект NSNumber
из NSInteger
, как это:
NSNumber *myNum = @(myNsIntValue);
или в предыдущей версии компилятора, используйте
NSNumber *myNum = [NSNumber numberWithInteger:myNsIntValue];
Этот ответ выводит предупреждение о новых 64-разрядных устройствах. Пожалуйста, см. Более точный ответ @ Кевина ниже. –
@FullDecent Отредактировано, спасибо! – dasblinkenlight
Это более правильный ответ, и он не будет производить неожиданные ошибка.
NSNumber *myNum = [NSNumber numberWithInteger:myNsIntValue];
Так как док сказал:
"numberWithInteger:. Создает и возвращает объект NSNumber, содержащий заданное значение, рассматривая его как NSInteger"
"numberWithInt: Создает и возвращает объект NSNumber, содержащий заданное значение, рассматривая его как подписанный int."
так Apple LLVM Compiler 4.0
, есть более простой способ создания NSNumber
объекта:
NSNumber *x = @1234;
NSNumber *y = @(anIntegerVariable);
NSNumber * z = @ (aDoubleValue); работает так же хорошо. – gnasher729
Это абсолютно возможно бросить NSInteger к NSNumber *. Результат, скорее всего, приведет к краху. Конечно, если у вас есть число x, вы можете использовать @ (x) для создания объекта NSNumber со значением x. Что будет работать, но это не актерский состав. – gnasher729