С NSNumber, являющимся классом, я пытаюсь преобразовать его в NSInteger для выполнения некоторых вычислений. В NSLog это показывает, что я конвертирую и выполняю умножение правильно. Однако, когда мне пришлось возвращать удвоитель в качестве обычного NSInteger, я получаю: «Неявное преобразование« NSInteger »(« длинное ») в« NSNumber * »запрещено ARC». Где я ошибаюсь и что мне делать, чтобы сделать это правильно?Как вернуть NSNumber, преобразованный в NSInteger
- (NSNumber *) numberThatIsTwiceAsBigAsNumber:(NSNumber *)number {
NSInteger doubler = [number integerValue] * 2;
NSLog(@"%ld", (long)doubler);
return doubler;
}
EDIT: Для тех, кому интересно, это то, как я ее решил:
NSInteger unboxing = [number integerValue] * 2;
NSNumber *boxing = [NSNumber numberWithInteger:unboxing];
return boxing;
return '@ (doubler);'. – rmaddy
Или старомодный способ, '[NSNumber numberWithInteger: doubler]'. –