EXC_BAD_ACCESS NSXMLParser在ARC上使用委托

时间:2011-12-05 13:20:21

标签: objective-c xcode delegates automatic-ref-counting

我在解析器DidendElement中有这段代码。

   [self setImageThumbnailLink:[NSMutableString stringWithString:imageLink]];
    if([_delegate respondsToSelector:@selector(receiveImageLink:withParser:withParameter:)]){

        [_delegate receiveImageLink:[self imageThumbnailLink] withParser:nil withParameter:parameterPassed];
    }        
    else{            
        [NSException raise:NSInternalInconsistencyException
                    format:@"Delegate doesn't respond to receiveItems:"];
    } 

当代码到达[_delegate receiveImageLink:[self imageThumbnailLink] withParser:nil withParameter:parameterPassed];

发生EXC_BAD_ACCESS。通过尝试使每个参数为零,我已经尝试了它的错误。当[self imageThumbnailLink]传递给委托时,会发生EXC_BAD_ACCESS。 我怎么解决这个问题? 我对imageThumbnailLink使用[nonatomic,strong]。它是NSMutableString。 如果我使用此代码(不使用变量):它工作正常。

 [_delegate receiveImageLink:@"http://www.....flower.jpg" withParser:nil withParameter:parameterPassed];

谢谢

控制台中的错误消息: 只要 当前语言:auto;目前objective-c(gdb)。

这是堆栈跟踪: error message (no error message in console)

1 个答案:

答案 0 :(得分:0)

这里缺少完整的错误消息是最好的猜测:

可能[self imageThumbnailLink]很糟糕或者是参数已过时。尝试将语句分成两部分进行调试: 例如:

NSLog(@"parameterPassed: %@", parameterPassed);
NSString *imageLink = [self imageThumbnailLink];
NSLog(@"imageLink: %@", imageLink);
[_delegate receiveImageLink:imageLink withParser:nil withParameter:parameterPassed];

通常,在尝试调试错误时,分离复合语句的组件是一个很好的第一步。