本文是 https://segmentfault.com/q/1010000005624591 引申出来的一个“NSURLSessionTask 是否可以添加 category”的研究文章。
http://stackoverflow.com/questions/24448936/nsurlsessiontask-category-method-crashes-with-unrecognized-selector-sent-to-ins
提到对NSURLSessionTask
添加category
后,在运行时会发生
unrecognized selector sent to instance
但是根据下面的实验结果,在iPhone 6 plus + iOS 9.3 的测试环境下,是可以找到对应的实现。
另外,http://stackoverflow.com/a/35359533 中提到在iOS 9.2中 __NSCFLocalDataTask
的继承链是__NSCFLocalDataTask
: __NSCFLocalSessionTask
:__NSCFURLSessionTask
:NSObject
.
所以,该问题应该只能在一些特殊的版本中才会发生。
根据问题截图,现在能猜测问题的另一个原因很可能是 Linker 在 处理 category 时会发生的一个隐藏bug。关于隐藏bug的讨论可以移步到
https://developer.apple.com/library/mac/qa/qa1490/_index.html