2012-01-03 2 views
0

Итак, я работаю от This Tutorial и пытаюсь построить XML-ридер в свое приложение с помощью встроенного api. Я пытаюсь читать через XML, и продолжать получать эту ошибку:AutoRelease вмешивается в обработку данных

*** -[CFString release]: message sent to deallocated instance 0x68675a0 

Я не отпуская или deallocating ничего, я позволить AutoRelease обрабатывать все это. Вот мой призыв к методу:

self.dtContact = [DTContactParser loadDTC]; 

if (_dtContact != nil) { 
    for (DTContact *dtc in _dtContact.contacts) { 
     NSLog(@"%@", dtc.description); 
} 
} 
NSLog(@"done"); 

Я получаю ошибку в конце этого, когда он посылает NSLog(@"done");, то он выдает ошибку.

Вот loadDTC в DTContactParser в

+ (DTCXMLResponse *)loadDTC { 

NSString *filePath = [self dataFilePath:FALSE]; 
NSData *xmlData = [[NSMutableData alloc] initWithContentsOfFile:filePath]; 
NSError *error; 
GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithData:xmlData 
                 options:0 error:&error]; 
if (doc == nil) { return nil; } 

DTCXMLResponse *dtcxmlr = [[DTCXMLResponse alloc] init]; 
NSArray *dtcontacts = [doc.rootElement elementsForName:@"DetectiveContact"]; 
for (GDataXMLElement *dtcontact in dtcontacts) { 

    // Let's fill these in! 
    NSString *description; 
    int dtcid; 

    // Name 
    NSArray *descriptions = [dtcontact elementsForName:@"description"]; 
    if (descriptions.count > 0) { 
     GDataXMLElement *firstName = (GDataXMLElement *) [descriptions objectAtIndex:0]; 
     description = firstName.stringValue; 
    } else continue; 

    // Level 
    NSArray *ids = [dtcontact elementsForName:@"idDetectiveContact"]; 
    if (ids.count > 0) { 
     GDataXMLElement *firstID = (GDataXMLElement *) [ids objectAtIndex:0]; 
     dtcid = firstID.stringValue.intValue; 
    } else continue; 

    DTContact *dtcontact = [[DTContact alloc] initWithName:description dtId:dtcid]; 
    [dtcxmlr.contacts addObject:dtcontact]; 


return nil; 

}}

А вот DTContact:

#import "DTContact.h" 

@implementation DTContact 
@synthesize description = _description; 
@synthesize dtId = _dtId; 

- (id)initWithName:(NSString *)description dtId:(int)dtId{ 

    if ((self = [super init])) { 
     self.description = description; 
     self.dtId = dtId; 
    }  
    return self; 

} 

@end

Любая помощь будет оценена.

+1

ARC включен или нет? –

+0

Да, я включил его. –

ответ

Смежные вопросы