Почему итератор NSEnumerator не распознает свойства объекта в DrawRect?

У меня обычно нет проблем с использованием NSEnumerator в iPhone SDK, но я впервые использую его в функции DrawRect UIView. Итератор NSEnumerator вызывает ошибку: запрос на член "(member)" в чем-то, что не является структурой или объединением.

1) Почему это происходит?
2) Как я могу обойти это?

(PS член, который не распознается, является правильно объявленным и синтезированным свойством подкласса NSObject, чей файл.h правильно импортирован в файл.m UIView, функция drawRect которого вызывает NSEnumerator)

2 ответа

Решение

Трудно сказать, не видя код. Но обычно компилятор выдает эту ошибку, когда у вас есть что-то вроде этого:

@interface MyClass : NSObject {
  int someValue;
}
@end

.... а потом в реализации....

MyClass *aPointer;

int index = aPointer.someValue;

В этом случае вы бы на самом деле хотели

int index = aPointer->someValue;

Очевидно, синтаксис немного отличается для свойств. Вы утверждаете, что свойство правильно объявлено и синтезировано, но компилятор явно не согласен. Я не уверен, сколько помощи кто-то может оказать вам, не увидев некоторые фрагменты кода. Крайне маловероятно, что сам NSEnumerator не распознает вашего участника. Скорее, некоторый код, который вы написали в контексте этого итератора, содержит опечатку.

Еще одна вещь, которую нужно помнить, это то, что NSEnumerator возвращает идентификаторы, а не указатели объектов (если вы их не приводите). У идентификатора нет свойств, поэтому любая попытка доступа к свойству с идентификатором не удастся. Как сказал Петерб, видение кода здесь очень поможет.

Другие вопросы по тегам