Можно ли преобразовать NSInteger в объект NSNumber?
Мне нужно преобразовать тег объекта UIImageView в объект NSNumber, потому что мне нужно передать его в качестве аргумента функции.
Можно ли преобразовать NSInteger в объект NSNumber?
Мне нужно преобразовать тег объекта UIImageView в объект NSNumber, потому что мне нужно передать его в качестве аргумента функции.
Вы не можете преобразовать его, потому что NSInteger
— это не объект, а просто псевдоним для встроенного типа. Вы всегда можете создать новый объект NSNumber
из NSInteger
, например:
NSNumber *myNum = @(myNsIntValue);
или в предыдущей версии компилятора используйте
NSNumber *myNum = [NSNumber numberWithInteger:myNsIntValue];
начиная с Apple LLVM Compiler 4.0
, есть более простой способ создать объект NSNumber
:
NSNumber *x = @1234;
NSNumber *y = @(anIntegerVariable);
Это более правильный ответ, и он не приведет к неожиданной ошибке.
NSNumber *myNum = [NSNumber numberWithInteger:myNsIntValue];
Потому что док сказал:
«numberWithInteger: создает и возвращает объект NSNumber, содержащий заданное значение, обрабатывая его как NSInteger».
«numberWithInt: создает и возвращает объект NSNumber, содержащий заданное значение, обрабатывая его как целое число со знаком».