【发布时间】:2011-01-27 16:48:05
【问题描述】:
我尽可能地简化了代码。并且仅包括应用程序按其需要运行所需的内容。
但我仍然遇到无法解释的崩溃。没有错误信息。它出现在我添加行 [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 意义上的 get,而您在这里没有这样做。约定只是
radioStationList。
标签: iphone objective-c