【问题标题】:Silence unimplemented protocol method warning for NSURLSessionDownloadTaskNSURLSessionDownloadTask 的未实现协议方法警告静音
【发布时间】:2014-06-28 23:55:02
【问题描述】:

我正试图弄清楚如何抑制我无意使用的委托方法的编译器警告。我知道我可以有一个空的方法体,但我仍然想找到一种不这样做的方法,所以我的源代码中的代码更少。

我在这里看到了这个答案:Dynamic forwarding: suppress Incomplete Implementation warning

但这似乎使事情过于复杂。有没有办法在我的 ViewController.h 的头文件中只添加一个衬里,所以我从来没有看到这个警告?

感谢您提供的任何帮助。

作为记录,我想消除此方法的警告:

- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask
                                  didResumeAtOffset:(int64_t)fileOffset
                                 expectedTotalBytes:(int64_t)expectedTotalBytes;

【问题讨论】:

  • 找到其中的协议和方法,并将其移至@option下方的底部。
  • 不能修改 Apple 协议文件
  • 虽然链接的问题可能过于复杂,但它可能是唯一的解决方案,因为未能包含所需的协议方法(或未能像链接的问题所询问的那样定义声明的方法)是一个非常好的方法得到一个unrecognized selector 异常,因此,你真的,真的,真的不应该压制这些警告。

标签: ios nsurlsession nsurlsessiondownloadtask


【解决方案1】:

缺少 REQUIRED 协议方法警告不应该被静音。

如果它是可选方法,它会被标记为这样并且不会引起警告。根据需要,您只是通过不包含它来要求崩溃。

如果被委托的对象尝试在其委托上调用此方法,而您只是抑制了警告而不是适当地包含它(因为它被标记为必需),您的应用程序将会崩溃 带有 unrecognized selector 异常。

如果您想消除警告,请包含该方法,如果您真的不想在/何时调用此方法时执行任何操作,请将其留空。

例如:

- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didResumeAtOffset:(int64_t)fileOffset expectedTotalBytes:(int64_t)expectedTotalBytes {};

一个班轮。

【讨论】:

  • 要求崩溃?这有点可笑。
  • 不,不是。如果委托对象尝试调用此方法并且您没有包含它,您的应用将崩溃并出现unrecognized selector 异常。
  • 很明显,如果我从不打电话给downloadTaskWithResumeData:,它就不会被调用,所以是的,这很荒谬。
  • 那么,如果该类定义了一个委托协议,其中包含您可以保证永远不会被调用的所需方法,那么您可能使用了错误的类来执行任何操作。但是为什么只包含它并将其留空如此困难,从而保证如果您真的不想找到适合该工作的课程,您永远不会收到unrecognized selector 异常。
  • 我用它来下载一些文件,所以我可以通过各自的委托方法- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didWriteData:(int64_t)bytesWritten totalBytesWritten:(int64_t)totalBytesWritten totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite获得下载进度,但我没有恢复失败任务的目的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多