首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在NSURLSession中使用自定义委托

无法在NSURLSession中使用自定义委托
EN

Stack Overflow用户
提问于 2015-09-18 19:31:59
回答 1查看 692关注 0票数 1

我有一个NSURLconnection实现,正在尝试迁移到IOS-9的NSURlsession。

NSURLconnection实现:

代码语言:javascript
复制
@property (nonatomic, strong, readwrite) NSURLConnection *  connection;    

自定义委托方法:

代码语言:javascript
复制
-(BOOL)connection:(NSURLConnection *)connection ---canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace*)protectionSpace   
-(void)connection:(NSURLConnection *)connection  didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge  
- (void)connection:(NSURLConnection *)conn didReceiveResponse:(NSURLResponse *)aresponse  
-(void)connection:(NSURLConnection *)conn didReceiveData:(NSData *)data  
- (void)connectionDidFinishLoading:(NSURLConnection *)conn
- (void)connection:(NSURLConnection *)theConnection didFailWithError:(NSError*)error  

self.connection = [NSURLConnection connectionWithRequest:request delegate:self];

现在,当我将上面的impl修改为基于NSURLsession的impl时,我现在有了

代码语言:javascript
复制
@property (nonatomic, strong, readwrite) NSURLSession *session;  

自定义委托方法:

代码语言:javascript
复制
- (BOOL)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace*)protectionSpace  
- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge  
- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didReceiveResponse:(NSURLResponse *)aresponse  
- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didReceiveData:(NSData *)data   
- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task connectionDidFinishLoading:(NSURLConnection *)conn  
- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didFailWithError:(NSError *)error  


NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration    defaultSessionConfiguration];
self.session = [NSURLSession sessionWithConfiguration:configuration                                                                  delegate:self                                                                    delegateQueue: nil];
NSURLSessionDataTask *task = [self.session dataTaskWithRequest:request];
[task resume]; 

在这之后,我得到了如下的编译错误:

代码语言:javascript
复制
./../source/smmacosx/smplt.m:663:33: error: sending     'SmHttpsAuthenticationHandler *' to parameter of incompatible type 'id<NSURLSessionDelegate> _Nullable' [-Werror]

                                                                                                                           delegate: self

                                                                                                                                   ^~~~

 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSURLSession.h:135:132: note: 

      passing argument to parameter 'delegate' here

 + (NSURLSession *)sessionWithConfiguration:(NSURLSessionConfiguration   *)configuration delegate:(nullable id <NSURLSessionDelegate>)delegate delegateQueue:(nullable NSOperati...

我不能理解为什么NSURLSession Impl中的delegate=self会抛出这样的错误?SmHttpsAuthenticationHandler是一个接口,定义为

代码语言:javascript
复制
 @interface SmHttpsAuthenticationHandler: NSObject{....} and then   @implementation SmHttpsAuthenticationHandler

请在NSURLSession实现上给出任何指示。非常感谢。

EN

回答 1

Stack Overflow用户

发布于 2015-09-22 07:29:20

在您的接口声明中,您需要声明您的类符合NSURLSessionDelegate协议,例如

@接口SmHttpsAuthenticationHandler : NSObject

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32650990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档