Swift委托respondsToSelector Bad Access

时间:2014-07-01 16:02:28

标签: ios objective-c delegates swift

我正在尝试将ASIHTTPRequest集成到Swift项目中 这是我的班级

class DataCenter : NSObject, ASIHTTPRequestDelegate{
    // ...
    func requestAllPrice() {
        var url = NSURL.URLWithString("www.baidu.com");
        var req = ASIHTTPRequest.requestWithURL(url) as ASIHTTPRequest
        req.delegate = self
        req.didFinishSelector = Selector("priceRequestDone")
        self.queue.addOperation(req);

    }

    func priceRequestDone( request : ASIHTTPRequest ){
        var response = request.responseString()
        println(response)
    }

    func requestFailed( req : ASIHTTPRequest ){
        println(req.error)
    }
}

但我在ASIHTTPRequest.m收到错误EXC_BAD_ACCESS:

- (void)requestStarted{
    if ([self error] || [self mainRequest]) {
        return;
    }
    if (delegate && [delegate respondsToSelector:didStartSelector]) {
        [delegate performSelector:didStartSelector withObject:self];
    }
    #if NS_BLOCKS_AVAILABLE
    if(startedBlock){
        startedBlock();
    }
    #endif
    if (queue && [queue respondsToSelector:@selector(requestStarted:)]) {
        [queue performSelector:@selector(requestStarted:) withObject:self];
    }
}

在第'if(delegate&& [delegate respondsToSelector:didStartSelector]){'

这是ASIHTTPRequestDelegate的定义:

@class ASIHTTPRequest;
@protocol ASIHTTPRequestDelegate <NSObject>

@optional

// These are the default delegate methods for request status
// You can use different ones by setting didStartSelector / didFinishSelector / didFailSelector
- (void)requestStarted:(ASIHTTPRequest *)request;
- (void)request:(ASIHTTPRequest *)request didReceiveResponseHeaders:(NSDictionary *)responseHeaders;
- (void)request:(ASIHTTPRequest *)request willRedirectToURL:(NSURL *)newURL;
- (void)requestFinished:(ASIHTTPRequest *)request;
- (void)requestFailed:(ASIHTTPRequest *)request;
- (void)requestRedirected:(ASIHTTPRequest *)request;
...
@end

我尝试将一个选择器分配给self.didStartSelector,它会在编译代码中报告错误访问。 帮帮我吧!

0 个答案:

没有答案