Проблема с методом dealloc - 'xmlEntity' не является именем класса или псевдонимом класса Objective C - PullRequest
1 голос
/ 30 июля 2010

Я нахожусь в процессе очистки своего кода и тестирования на наличие ошибок, когда я столкнулся с этой ошибкой сборки: ['xmlEntity' не является ни именем класса Objective C, ни псевдонимом].Вот сокращенная версия моего файла класса .h.

@interface PMXMLParser : NSXMLParser {
           NSMutableDictionary *xmlEntity;
           NSMutableDictionary *collectionDict;
}
@property (nonatomic, retain)   NSMutableDictionary *xmlEntity;
@property (nonatomic, retain)   NSMutableDictionary *collectionDict;

@end

Вот файл .m.

@implementation PMXMLParser

@synthesize xmlEntity, collectionDict

- (void) dealloc
{
    // this builds correctly, with no issues.
    [collectionDict release];


    // 1. This works
    //self.xmlEntity = nil;

    // 2. This causes the build error: 'xmlEntity' is not an Objective-C class name or alias
    //[xmlEntity release];

    [super dealloc];
}
@end

Теперь для меня эти примеры 1 и 2 делают то же самое,немного больше работы для номера 1.

Кто-нибудь знает, почему я получаю эту ошибку сборки для номера 2?

Редактировать: 30.07.2010 - Код представленздесь скомпилируется правильно, это всего лишь сокращенная версия всего моего класса.Но мой текущий класс не компилируется.Я опубликую весь класс позже, когда я заберу частный код.

Спасибо.

Ответы [ 2 ]

1 голос
/ 06 января 2011

Я обнаружил, что программа, над которой я работал, включает фреймворк libxml2.dylib.Который имел структуру под названием xmlEntity.Что привело меня к проблеме, так это цвет синтаксиса для элемента xmlEntity, который был светло-фиолетовым.

1 голос
/ 30 июля 2010

Это действительно ваша реализация?Вам необходимо иметь отдельный раздел @implementation в исходном файле ".m", и вам нужно @synthesize эти свойства, прежде чем вы сможете их использовать.Кроме того, ваша функция dealloc должна находиться в разделе @implementation.Но, если оставить в стороне эти проблемы, если вы можете использовать выражение self.xmlEntity, но не xmlEntity, это означает, что существует проблема с областью видимости (возможно, потому что вы не в разделе @implementation), которую можно исправить с помощью:

[self.xmlEntity release];

Тем не менее, я бы правильно рассмотрел вышеупомянутые вопросы.

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