Почему итератор 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 возвращает идентификаторы, а не указатели объектов (если вы их не приводите). У идентификатора нет свойств, поэтому любая попытка доступа к свойству с идентификатором не удастся. Как сказал Петерб, видение кода здесь очень поможет.