Несколько вызовов через запятую в одной строке в Objective-C - PullRequest
2 голосов
/ 17 января 2012

В последнее время я увидел следующую строку:

[someObject release], someObject = nil;

Почему это работает? Почему и при каких обстоятельствах может быть несколько вызовов, разделенных , в одной строке? ( Не ;)

Ответы [ 2 ]

3 голосов
/ 17 января 2012

Objective C является надмножеством C, а , является оператором в C. Он оценивает последнее выражение в цепочке и создает точку последовательности .

Точка с запятой ; не может использоваться в выражении, потому что это не оператор.

Возможно, вы видели оператор , в работе в более распространенной ситуации, включающей циклы for:

int i = 0, j = 0;
for ( ; i < 200 ; i++, j += 3) { // This is one of the more typical uses of ','
}
1 голос
/ 17 января 2012

Оператор запятой вычисляет первый операнд и отбрасывает результат, затем оценивает второй и возвращает его значение.Первое не имеет возвращаемого значения, а второе имеет возвращаемое значение nil в этом случае.

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