Понимание указателя массива - PullRequest
       7

Понимание указателя массива

0 голосов
/ 17 сентября 2011

Я новичок в Objective-C и мне нужна помощь с концепцией указателей. Я написал этот код:

//myArray is of type NSMutableArray
NSString *objectFromArray = [myArray objectAtIndex:2];
[objectFromArray uppercaseString];

Я предполагал, что это изменит строку в myArray [2], так как я получил фактический указатель на нее. Разве любые изменения в разыменованном указателе не должны означать, что объект в этом месте изменяется? Или это как-то связано с «неизменностью строк»? В любом случае, когда я использую NSLog и перебираю myArray, все строки все еще строчные.

Ответы [ 2 ]

2 голосов
/ 17 сентября 2011

Не должны ли какие-либо изменения в разыменованном указателе означать, что объект в этом месте изменяется?

Да, они будут. Но если вы прочитаете документацию для uppercaseString, вы увидите, что она не изменяет строку на месте. Скорее, он возвращает новую заглавную версию исходной строки. Все методы на NSString работают так.

Вам потребуется экземпляр NSMutableString, чтобы иметь возможность изменять его содержимое на месте. Но NSMutableString не имеет соответствующего метода в верхнем регистре, поэтому вам придется написать его самостоятельно (как категорию для NSMutableString).

0 голосов
/ 17 сентября 2011

конечно !! ни одна строка в массиве не будет преобразована в верхний регистр как оператор [objectFromArray uppercaseString]; возвратил бы заглавную строку, которая не была собрана ни в одном объекте. «uppercaseString» не изменяет сам строковый объект, с которым вызывается ... !!

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