И проверить

инство примеров, которые я нашел в сети, пишут так:

if(x != nil)
    // ...

Есть ли проблемы с этим?

if(x)
    // ...

Я попробовал оба в простой программе и не смог найти никакой разницы.

Ответы на вопрос(5)

if([yourNullObject isKindOfClass:[NSNull class]]){
    //if it is null
}else{
    //if it is not null
}
Решение Вопроса

nil определяется как значение, называемое__DARWIN_NULLкоторый по существу оценивает0 или жеfalse в операторах if. Поэтому написаниеif (x == nil) так же, как писатьif (!x) и писатьif (x != nil) равноif (x) (так как по сравнению сfalse создает отрицание, и по сравнению сtrue сохраняет состояние одинаковым).

Вы можете написать свой код в любом случае, и это действительно зависит от того, что вы считаете более читабельным. я нахожуif (x) чтобы иметь больше смысла, но это зависит от вашего стиля.

Это как сравниватьif (someCondition == true) противif (someCondition).
Все зависит от вас и от того, кто будет читать код.

Редактировать: Как правильно упоминает Юджи, поскольку Objective-C является надмножеством C, любое условие, которое оценивает значение, отличное от 0, считается истинным, и поэтому, еслиsomeCondition в приведенном выше примере нужно было оценить целочисленное значение, скажем, -1, сравнивая его сtrue приведет кfalseи оператор if не будет оцениваться. Что-то, о чем нужно знать.

 algal20 февр. 2013 г., 23:12
Проверьте раздел «Работа с ноль» в документации Apple:developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/... , Как говорится, обе формы в порядке. Тем не менее, будьте осторожны, что есть тонкие и коварные проблемы, если вы пытаетесьбросать ссылка Obj-C на BOOL, как описано вmikeash.com/pyblog/...
 Itai Ferber30 июл. 2014 г., 23:08
@erik Да, они должны.nil по существу равен 0, поэтому эти условия оценивают вif (0) а такжеif (0 != 0), оба из которых являются ложными.
 erik30 июл. 2014 г., 16:55
так что если х == 0; если бы (х) и если (х! = ноль) ведут себя одинаково?
 Itai Ferber30 мая 2011 г., 17:13
@ Юджи, это правильно. Я пытался предположить, чтоsomeCondition оценивается как логическое значение, но это важное предупреждение.
 Yuji30 мая 2011 г., 17:05
Я должен добавить, чтоif(someCondition==true) не рекомендуется, потому что в языках, производных от C, любое значение, отличное от 0, в принципе может рассматриваться как логическое истинное значение, но по историческим причинам, еслиsomeCondition является-1 а такжеtrue определяется как1 тогдаsomeCondition==true оценивается как ложное.

Обе

if (x != nil)

а также

if ( x )

эквивалентны, поэтому выберите вариант, который, по вашему мнению, делает ваш код болееудобочитаемый для вас (и других, кто будет читать и поддерживать ваш код)

Лучший и безопасный способ проверить ноль
Сделайте общий метод и добавьте все этизначение NULL :

+ (NSString *)trimWhiteSpaceAndNewLine:(NSString *)string {
    NSString *stringSource = [NSString stringWithFormat:@"%@",string];
    if ([stringSource isEqualToString:@"(null)"]) {
        stringSource = @"";
        return stringSource;
    }
    if ([stringSource isEqualToString:@"<null>"]) {
        stringSource = @"";
        return stringSource;
    }
    if ([stringSource isEqualToString:@"<nil>"]) {
        stringSource = @"";
        return stringSource;
    }
    if ([stringSource isKindOfClass:[NSNull class]]) {
        stringSource = @"";
        return stringSource;
    }
    if ([stringSource isEqualToString:@""]) {
        stringSource = @"";
        return stringSource;
    }
    if (stringSource == nil) {
        stringSource = @"";
        return stringSource;
    }
    NSString *stringFinal = [stringSource stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
    return stringFinal;
}  

И проверить

NSString *strUuid = [Common trimWhiteSpaceAndNewLine:[dict valueForKeyPath:@"detail.uuid"]];
        if (![strUuid isEqualToString:@""]) {
            // do your stuff
        }

и это вопрос стиля, и он сводится к тому, предпочитаете ли вы:

если что-то) { ... }

против

если (что-то! = ничего) {...}

Я всегда находил # 1 более понятным, но # 2 широко используется в документации и, следовательно, в области, поэтому лучше как знать обе формы, так и адаптироваться к тому, что использует проект, и быть стилистически последовательными.

Ваш ответ на вопрос