1
является литералом, и компилятор сделает его соответствующим числовым типом, если это подходит.
Обратите внимание, что в то время как NSInteger
и int
предназначены для самых разных целей, NSNumber
- тип объекта. В этом случае ваш код не имеет смысла (и не должен компилироваться без предупреждений).
(На самом деле, есть некоторые обстоятельства, при которых он будет делать вид смысла, с точки зрения арифметики указателей, но это совсем не то, что вы хотите.)
Для случая NSNumber, вы вместо этого хотите что-то как:
day = [NSNumber numberWithInt:[day intValue] + 1];
Интересный ... кажется важным моментом ... – Moshe