가능한 한 간단하게 코드를 유지했습니다. 앱이 필요로하는 기능을 수행하는 데 정말로 필요한 것만 포함했습니다.객체를 열려고하면 응용 프로그램이 작동을 멈 춥니 다.
하지만 아직도 설명 할 수없는 충돌이 발생합니다. 오류 메시지가 없습니다. 내가 [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
내가 '파서'의 출시를 호출하지 않고 코드를두면 그것은 완벽하게 작동합니다. 그러나 분명히 그것은 메모리 누수입니다.
코코아/iOS에 익숙하지 않은 경우 'get *'메소드의 이름을 지정하지 마십시오. 여기서는하지 않습니다. 컨벤션은 단순히'radioStationList' 일 것이다. – bbum
감사의 말을 맞았습니다. –