Указатели экземпляров в массиве - PullRequest
0 голосов
/ 02 июня 2011

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

Class *class = [Class new];
/* Do something with the instance */

[instanceArray addObject:class];

Я могу получить требуемый индекс из массива, но когда я пытаюсь получить доступ к переменным экземпляра и т. Д., Мне только кричит компилятор или иногда я получаю каждую переменную как ноль.

Как мне вернуть экземпляр для использования из массива? Я знаю, что они указатели, но играть с ними, похоже, не получилось.

1 Ответ

0 голосов
/ 02 июня 2011

Используя addObject: элемент вставляется в конец массива. Чтобы получить его, вы можете использовать -[NSArray objectAtIndex:]

Арифметика указателей работает в C, так как тогда ваш массив является просто указателем на первый индекс, а array[i] совпадает с *(array + i). В Objective-C это все еще можно сделать, однако вы используете объект NSArray. Теперь у вас больше нет указателя на первый объект, но на экземпляр класса. Чтобы получить объекты, хранящиеся в массиве, вам нужно вызвать соответствующие методы.


EDIT Таким образом, вы можете извлечь его из массива, и тогда ваш указатель не будет nil, так что у вас есть доступ к объекту. Вы знаете, что в Objective-C все переменные экземпляра являются частными, поэтому вы не можете получить к ним доступ извне. Вы должны сначала объявить их как свойства (пожалуйста, обратитесь к документации). Кроме того, когда вы объявляете переменную типа id, доступ к свойству с точечным синтаксисом не работает, это приведет к ошибке компилятора.

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