0

OAuthConsumer を組み込んで API とやり取りしようとしています。「self」キーワードが空の場合、デリゲートの問題が発生します。

以下のコードが唯一のviewController内に配置されると、すべてが機能します。コードが wpOAuth と呼ばれるクラス内に配置され、それが viewController から呼び出されると、「self」キーワードが空になり、このエラーが発生します: requestTokenTicket:didFinishWithData:]: unrecognized selector sent to instance 0x7172ac0

-(void)getKey:(UIViewController *) uiViewController{
    NSLog(@"\n\nGet Key!!!!!");
    OAConsumer *consumer = [[OAConsumer alloc] initWithKey:@"fsdfsdsdfsdfsdf"
                                                    secret:@"sdfdsfsdfsdf"];

    NSURL *url = [NSURL URLWithString:@"http://api-public.netflix.com/oauth/request_token"];

    OAMutableURLRequest *request = [[OAMutableURLRequest alloc] initWithURL:url
                                                                   consumer:consumer
                                                                      token:nil   // we don't have a Token yet
                                                                      realm:nil   // our service provider doesn't specify a realm
                                                          signatureProvider:nil]; // use the default method, HMAC-SHA1

    [request setHTTPMethod:@"POST"];

    OADataFetcher *fetcher = [[OADataFetcher alloc] init];

    [fetcher fetchDataWithRequest:request
                         delegate:self
                didFinishSelector:@selector(requestTokenTicket:didFinishWithData:)
                  didFailSelector:@selector(requestTokenTicket:didFailWithError:)];
}

- (void)requestTokenTicket:(OAServiceTicket *)ticket didFinishWithData:(NSData *)data {
    if (ticket.didSucceed) {
        NSString *responseBody = [[NSString alloc] initWithData:data
                                                       encoding:NSUTF8StringEncoding];
        //requestToken = [[OAToken alloc] initWithHTTPResponseBody:responseBody];
        NSLog(@"%@",[[OAToken alloc] initWithHTTPResponseBody:responseBody]);
        NSLog(@"\nticket is????????????????????????????= %@ ",ticket.body);
    }
}

self キーワードが空である理由についての洞察をいただければ幸いです。

ありがとう、4D

4

1 に答える 1

0

私はこの方法で処理されるデリゲートに精通していませんが- (void)requestTokenTicket:(OAServiceTicket *)ticket didFinishWithData:(NSData *)data;、メソッドを定義するためにヘッダーに追加する必要があると思います。プロトコルを使用していないように見えるOADataFetcherため、オブジェクトでメソッドを呼び出そうとすると、定義されていないため表示されません。

于 2012-11-27T18:14:00.147 に答える