Я сохранил код как можно проще. И включил только то, что действительно необходимо для того, чтобы приложение функционировало так, как нужно.Приложение сбой при попытке и освобождении объекта
Но я все еще получаю сбой, который я не могу объяснить. Сообщение об ошибке отсутствует. Он появился, когда я добавил строку [parser release];
Парсер, который является объектом XMLParser, сбрасывается, когда я освобождаюсь, происходит, даже если его локально выделено и выпущено, или если я сделаю его переменной-членом и выпустят в методе dealloc.
Вот код маленького класса его использовали в.
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@class WebServiceAPI, RadioAppDelegate, XMLParser;
@interface WebServiceAPI : NSObject
{
XMLParser *parser;
FootballRadioAppDelegate *appDelegate;
}
@end
#import "WebServiceAPI.h"
#import "XMLParser.h"
@implementation WebServiceAPI
-(void) getRadioStationList//:(id) aDelegate;
{
NSURL *url = [[NSURL alloc] initWithString:@"http://bdoyle.kingpinhosting.com/Radios.xml"];
NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:url];
[url release];
parser = [[XMLParser alloc] initXMLParser];
[xmlParser setDelegate:parser];
[xmlParser parse];
[xmlParser release];
xmlParser = nil;
}
- (void) connectionDidFinishLoading:(NSURLConnection*)connection
{
}
- (void) connection:(NSURLConnection*) connection didFailWithError:(NSError*) error
{
}
-(void) dealloc
{
[parser release];
parser = nil;
[super dealloc];
}
@end
Если я оставить код без вызова к высвобождению «парсер», то он работает отлично. Но, очевидно, это утечка памяти.
Не называть методы «get *», если вы не получаете ощущение Cocoa/iOS, которое вы здесь не делаете. Конвенция будет просто «radioStationList». – bbum
Спасибо. –