obj-c Сравнение счетчиков NSArray - PullRequest
1 голос
/ 10 ноября 2009
NSArray *test1 = [NSArray arrayWithObjects:@"1",@"2", nil];
NSArray *test2 = [NSArray arrayWithObjects:@"1",@"2", nil];
NSArray *test3 = [NSArray arrayWithObjects:@"1",@"2", nil];

NSLog(@"%d", [test1 count] == [test2 count] == [test3 count]);

напечатает 0. Почему?

Ответы [ 2 ]

6 голосов
/ 10 ноября 2009

Я бы предположил, что ваш первый тест [количество тестов 1] == [количество тестов 2] возвращает значение true (или 1), но затем второй тест 1 == [количество тестов 3] не пройден, поскольку в нем 2 элемента. Вы, вероятно, хотите сказать ([test1 count] == ​​[test2 count]) && ([test2 count] == ​​[test3 count]) вместо этого. Это проверяет равенство, используя транзитивное свойство - то есть, если A == B и B == C, то A == C.

2 голосов
/ 10 ноября 2009

[test1 count] == [test2 count] == [test3 count]

Будет оцениваться как:

[test1 count] == [test2 count] == [test3 count]
= (int of 2) == (int of 2) == [test3 count]
= (BOOL of YES) == (int of 2) // Comparing an implicit 1 with 2 so !=
= (BOOL of NO)
= (int of zero implicit cast)
...