こんにちはevery1は私がメモリリークを起こしているコードです。 私はメモリリークを扱うのが本当に新しいので、単純なバグであっても親切にしてください。私は(1である。このメモリリークの問題「メソッドはNSErrorを受け入れるには、エラーが発生したかどうかを示すために、void以外の戻り値を持たなければならない」と他がNULLポインタのDeDereferenceで取得しています。このコードのエラーが発生したかどうかを示すvoid以外の戻り値が必要です
-(void) parseActivityData:(NSMutableData*) data parseError:(NSError **)error
{
NSXMLParser* parser = [[NSXMLParser alloc] initWithData:data];
[parser setDelegate:self];
[parser setShouldProcessNamespaces:NO];
[parser setShouldReportNamespacePrefixes:NO];
[parser setShouldResolveExternalEntities:NO];
[parser parse];
NSError *parseError = [parser parserError];
if (parseError && error) {
*error = parseError;
}
[*error retain];
[parser release];
}
変数 'error'から読み込まれます)。
-(BOOL) parseActivityData:(NSMutableData*) data parseError:(NSError **)error
{
NSXMLParser* parser = [[NSXMLParser alloc] initWithData:data];
[parser setDelegate:self];
[parser setShouldProcessNamespaces:NO];
[parser setShouldReportNamespacePrefixes:NO];
[parser setShouldResolveExternalEntities:NO];
BOOL success = [parser parse];
// only assign error if parser FAILED
if(success == NO)
{
// error should be autoreleased... no need to retain
*error = [parser parserError];
// if the above line doesn't work (if error also releases
// when you release the parser object), then take out the above
// line of code and uncomment this line below:
//
// *error = [[parser parserError copy];
//
// the above line makes a retained copy of the error, which
// you must release in the caller.
}
return success;
}
Plzは - (void)parseActivityData:(NSMutableData *)data parseError:(NSError **)error { – MayurCM