できるだけシンプルにコードを保管しています。また、アプリが必要とする機能を果たすために本当に必要な機能だけが含まれています。オブジェクトを試して解放しようとするとアプリケーションがクラッシュする
しかし、私はまだ説明できないクラッシュを取得しています。エラーメッセージはありません。私が[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
私は「パーサ」の放出をコールせずにコードを残している場合、それは完璧に動作します。しかし明らかにそれはメモリリークです。
あなたがここでやっていないCocoa/iOSの取得の感覚に慣れるまで、「get *」メソッドに名前を付けないでください。条約は単に 'radioStationList'となるでしょう。 – bbum
ありがとうございました。 –