Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 应具有非void返回值,以指示是否发生错误_Objective C_Ios_Xcode - Fatal编程技术网

Objective c 应具有非void返回值,以指示是否发生错误

Objective c 应具有非void返回值,以指示是否发生错误,objective-c,ios,xcode,Objective C,Ios,Xcode,嗨,下面的每个1是我的代码,我在其中得到内存泄漏。 我真的是处理内存泄漏新手,所以请善待我,即使它是一个简单的错误 -(void) parseActivityData:(NSMutableData*) data parseError:(NSError **)error { NSXMLParser* parser = [[NSXMLParser alloc] initWithData:data]; [parser setDelegate:self]; [parser se

嗨,下面的每个1是我的代码,我在其中得到内存泄漏。 我真的是处理内存泄漏新手,所以请善待我,即使它是一个简单的错误

-(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];   
}
对于这段代码,我得到了这个内存泄漏问题,一个是“接受NSError的方法应该有一个非空的返回值来指示是否发生了错误”,另一个是null指针的DeDereference(从变量'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;
}

只要按要求做就行了。当您实际使用错误参数时,返回一个BOOL而不是void,该值设置为NO。也不要
[*错误保留] > 

考虑从--(无效)PARSEActuviyDATA(NSMTUBLeDATAB*)数据PARSEError(NSRROR**)错误的代码{这不会修复错误“方法接受NSError应该有一个非空返回值”。