项目从AFN 2.0 迁移到 3.0,因为代码历史问题,需要通过NSURLSessionTask 获取到responseString,可是通过category 无法添加属性以及方法
由于category 中需要用到reposne 中的数据,所以也无法直接给 NSObject 添加category,各位大大,是否有好的解决方案
PHP中文网2017-04-18 09:08:28
NSURLSessionTask는 실제로 카테고리를 추가할 수 없습니다. 이는 "상속될 수 없음" 문제와 다소 유사합니다. 일반적으로 이러한 종류의 문제가 발생하면 몇 가지 아이디어가 귀하의 비즈니스에 사용될 수 있는지 확인할 수 있습니다.
조합은 상속을 대체하고 작업인 속성이 있는 NSURLSessionTaskWrapper를 정의하며 원하는 다른 속성과 메서드를 추가할 수 있습니다. 작업을 사용하는 부분에 wrapper.task
을 직접 사용할 수도 있고 다음을 수행할 수도 있습니다. 이를 통과시키는 메소드를 작성하십시오(예:
물론 자신이 직접 코드를 제어할 수는 있지만wrapper.task
시스템의 코드는 제어할 수 없기 때문에 비즈니스에 활용할 수 있을지는 모르겠습니다.
런타임을 사용하여 속성과 메소드를 추가하세요. 이를 통해 위의 "시스템 코드를 제어할 수 없음" 문제를 해결할 수 있습니다. 런타임을 사용하여 수정한 후 이 클래스는 시스템의 관점에서 이러한 속성과 메서드를 갖게 됩니다. 하지만 카테고리를 추가할 수 없습니다. 런타임이 작동하는지 모르겠습니다.
외부 저장소. sessionTask에 고유 ID로 사용하기에 적합한 속성이 있는지 확인한 후 SessionTaskManager 클래스를 작성합니다. 새로 추가된 메소드는 이 관리자 클래스에 배치되며 관리자는 해당 ID로 사전을 저장할 수 있습니다. sessionTask를 키로 사용합니다. 특히 속성은 값이며 필요한 경우 ID를 기반으로 액세스됩니다.
위 내용은 일반적으로 사용되는 몇 가지 아이디어입니다. 귀하의 비즈니스에 적용 가능한지 확인할 수 있습니다~
ringa_lee2017-04-18 09:08:28
2016년 6월 3일 21:29:15 업데이트
으아악 으아악http://stackoverflow.com/a/35359533에서 언급한 이유로
에 확장을 추가했습니다.NSObject
class어떤 이유로든 파일에 하나의 카테고리만 추가하지 마세요. 자세한 이유는 https://developer.apple.com/library/mac/qa/qa1490/_index.html에서 확인할 수 있습니다.
질문자는 위의 코드가 요구 사항을 충족할 수 있는지 확인할 수 있습니다.