Цель C Методы и синтаксис - PullRequest
0 голосов
/ 04 декабря 2011

Я немного растерялся, когда работаю с объективом-c. Эта часть меня особенно смущает.

Какова цель и / или разница между написанием кода, подобного этому ...

object = [object method];

и

[object method];

Цель обучения - до сих пор я всегда предполагал, что смогу сделать что-то подобное ..

скажи, что я уже создал это ..

NSString *object = [[NSString alloc]initWithFormat:@"%@"];

тогда я мог бы делать то, что я хочу, вот так ..

[object applyAnyMethodHere];

но сейчас я вижу такие вещи ..

object = [object applyAnyMethodHere];

В чем разница между этими двумя?

Ответы [ 2 ]

3 голосов
/ 04 декабря 2011

Первый (object = [object method];) является присваиванием любого возвращаемого метода.

Второй ([object method];) просто вызывает метод, не обращая внимания на его возвращаемое значение (если есть).

Третий (NSString *object = [[NSString alloc]initWithFormat:@"@"]) объявляет переменную и присваивает возвращаемое значение метода initWithFormat, вызванного на возвращаемое значение метода класса alloc.

0 голосов
/ 04 декабря 2011

Во многих языках программирования object = [object method]; - это то, что называется оператором присваивания.Рассмотрим:

x = y + z;

Считывание оператором справа налево означает:

Вычислить сумму переменных y и z и затем сохранить ее в переменнойназывается х.

Содержание правой части вашего выражения не так важно, как то, что на самом деле происходит во всем утверждении.В вашем примере компьютер будет:

Сказать объекту с именем «object» выполнить «метод» и сохранить результаты обратно в «object».

Однако,Вы не всегда хотите сохранять результаты вызова метода.Например, если вы хотите представить представление оповещения, вы можете просто позвонить:

[myalertView show];

Обратите внимание, что назначения не происходит.Присвоение не требуется, если только вы не хотите сохранить значение, возвращаемое вызовом метода.

Также учтите следующее:

NSInteger x = 5;

Нет вызова метода, но есть назначение.Ваш пример object = [object method]; является просто более сложной версией этого.

...