Код выглядит более или менее правильным для меня, кроме утечки памяти. Вы должны просмотреть правила управления памятью и исправить вашу утечку.
Я предполагаю, что введенные вами цифры складываются в число, которое находится за пределами диапазона int
. Ввод, скажем, 1000000000 (10 ** 9) в каждое из пяти полей будет одним из способов осуществить это на любой машине, где int
составляет 32 бита (включая, в настоящее время, устройства iPhone-OS). 1007 *
В зависимости от цели вашего приложения вы можете просто ограничить пять полей ввода; если максимальное значение, которое имеет смысл, составляет менее одной пятой (для пяти полей, и при этом предполагается, что все они имеют одинаковый предел) максимального значения int
, переполнение невозможно.
Если крышка не решит проблему полностью, попробуйте другой тип. Если значения никогда не должны быть отрицательными, используйте тип без знака. В противном случае попробуйте long long
, либо любой из типов с плавающей точкой, либо используйте объекты NSDecimalNumber.
Конечно, я могу быть совершенно неправ, так как вы не сказали, какие цифры вы ввели или каков был результат. Если он был нулевым, убедитесь, что вы подключили свои выходы в IB; если вы забыли сделать это, они содержат nil
, который при запросе text
вернет nil
, который при запросе intValue
вернет 0 и 0 + 0 + 0 + 0 + 0 = 0.