Если он не может быть нулевым или пустым, ваш установщик не должен принимать нулевые или пустые значения, или выдает ArgumentException, если это так.
Кроме того, требуется, чтобы свойство было установлено в конструкторе.
Таким образом, вы вводите действительное значение, а не возвращаетесь позже и говорите, что не можете определить остаток на счете, так как он не установлен.
Но я бы согласился с ответом bduke.
Примитивы не могут быть нулевыми
. nil
зарезервирован для указателей на объекты Objective-C. nil
технически является типом указателя, и смешивание указателей и целых чисел без приведения почти всегда приводит к предупреждению компилятора, за одним исключением: совершенно нормально неявно преобразовать целое число 0 в указатель без приведения .
Если вы хотите различать 0 и «нет значения», используйте класс NSNumber
:
NSNumber *num = [NSNumber numberWithInt:0];
if(num == nil) // compare against nil
; // do one thing
else if([num intValue] == 0) // compare against 0
; // do another thing
if (var) {
...
}
Добро пожаловать в чудесный мир C. Любое значение, не равное целому числу 0 или нулевой указатель, является истинным.
Но у вас есть ошибка: целые числа не могут быть нулевыми. Они представляют собой типы значений, как и в Java.
Если вы хотите «упаковать» целое число, вам нужно запросить его адрес:
int can_never_be_null = 42; // int in Java
int *can_be_null = &can_never_be_null; // Integer in Java
*can_be_null = 0; // Integer.set or whatever
can_be_null = 0; // This is setting "the box" to null,
// NOT setting the integer value