2014-10-28 7 views
0

이것은 나를 괴롭 히고 있습니다. 난 아무런 문제없이 NSURLConnection에 클래스 메서드를 연결했지만 +[NSURLSession sessionWithConfiguration:delegate:delegateQueue:]과 붙어 있습니다. 후크는 그래서 우리는 바로 그것을 가지고 생각 호출되는 sessionWithConfiguration:delegate:delegateQueue: initialize [NSURLSession sessionWithConfiguration : delegate : delegateQueue :]를 연결할 수 있지만 % orig를 호출하면 "인식 할 수없는 선택기"가 표시됩니다.

그리고 이상한 것은 않습니다되어

는 난 모든 클래스 class_copyMethodList (object_getClass([NSURLSession class]), &count);와 메소드와 클래스 메소드는 실제로이 로그인했습니다. %orig()를 호출 그냥 수율 아래 매개 변수를 전달 :

+ (NSURLSession *)sessionWithConfiguration:(NSURLSessionConfiguration *)configuration 
            delegate:(id<NSURLSessionDelegate>)delegate 
          delegateQueue:(NSOperationQueue *)queue 
{ 

    NSURLSession *origResult = %orig(configuration, delegate, queue); 

    return origResult; 
} 

난 아무것도 실종 :

여기

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[NSURLSession sessionWithConfiguration:delegate:delegateQueue:]: unrecognized selector sent to class 0x1919932b8'

후크입니까?

설치 세부 정보 : rpetrich's Theos 맥 OS X 10.9.5 아이 패드 에어 1 아이폰 OS 7.1.2

답변

0

여기서 문제는 NSURLSession being a class cluster과 관련됩니다. OP의 코드가 클래스 메소드를 성공적으로 연결하는 동안 %orig은 실제 클래스 이름을 호출해야합니다. 따라서 이것을 작동 시키려면이 후크를 %hook __NSCFURLSession 아래에 두어야합니다. 귀하의 경우 실제 수업 이름이 다를 수 있습니다.

0

이 코드를 사용해보십시오 ...

+ (NSURLSession *) sessionWithConfiguration: (NSURLSessionConfiguration *) configuration delegate: (id) delegate delegateQueue: (NSOperationQueue *) queue 
{ 
    NSURLSession * session = [ NSURLSession SessionWithConfiguration : Configuraion 
          delegate : self 
         DelegateQueue : nil ]; 
} 

delegateQueue는 NSOperationQueue를 지정합니다. 코드에 nil 대신 delegateQueue가 필요한 경우 queue를 선언해야합니다.

+0

문제 : 1. 'SessionWithConfiguration'' DelegateQueue'를 사용하면이 메소드가 어디에도 없거나 다른 헤더에 있어야하기 때문에 컴파일되지 않습니다. 2.'sessionWithConfiguration'' delegateQueue'을 의미한다면. 그것은 단지 자신을 호출하기 때문에 영원히 재귀 호출로 끝날 것입니다. 3. self는 클래스 메서드에서 사용할 수 없으며 인스턴스 메서드에서만 사용할 수 있습니다. – radj

+0

이 링크를 통해 http://qiita.com/aKentaKoyama/items/96a979ab3a140e7b39ec – vishnu