Функции как указатели в Objective-C - PullRequest
0 голосов
/ 29 мая 2010

Это вопрос от Learn Objective-C на Mac ...

Функции в качестве указателей

То, что я набрал, согласно рецепту, было:

NSString *boolString (BOOL yesNo) {
if (yesNo) { return (@"YES");
} else { return (@"NO");
} } // boolString

Звездочка указателя в первой строке не кажется необходимой, но ее удаление приводит к сообщению об ошибке. Но что это делает? В

 NSString * boolString (yesNo);

то, что, похоже, происходит, это функция, определенная как указатель на строку NSString. Функция без звездочки

NSLog (@"are %d and %d different? %@", 5, 5, boolString(areTheyDifferent));

возвращает NSString YES или NO. Но как он может вернуть строку NSString, когда это указатель? Это могло бы возвратить АДРЕС NSString; или в случае разыменования он может вернуть СОДЕРЖАНИЕ этого адреса (строка NSS, такая как ДА или НЕТ). И все же я не вижу места, где бы оно было разыменовано.

Ответы [ 2 ]

3 голосов
/ 29 мая 2010

Функция возвращает указатель на объект NSString. В Objective-C вы почти никогда не имеете дело с объектами напрямую, только с указателями на них. Насколько вам известно, NSString * - это тип, который вы всегда должны использовать.

0 голосов
/ 29 мая 2010

Указатель предназначен для строки NSSt, которую возвращает функция, а не для самой функции.

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