Как я тестирую, если примитив в Objective C является нолем?

Если он не может быть нулевым или пустым, ваш установщик не должен принимать нулевые или пустые значения, или выдает ArgumentException, если это так.

Кроме того, требуется, чтобы свойство было установлено в конструкторе.

Таким образом, вы вводите действительное значение, а не возвращаетесь позже и говорите, что не можете определить остаток на счете, так как он не установлен.

Но я бы согласился с ответом bduke.

14
задан bpapa 21 May 2009 в 22:10
поделиться

2 ответа

Примитивы не могут быть нулевыми . 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
36
ответ дан 1 December 2019 в 06:28
поделиться
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
11
ответ дан 1 December 2019 в 06:28
поделиться