XCode не распознает пользовательский метод - PullRequest
1 голос
/ 26 мая 2011

У меня есть собственный класс NSObject под названием "GREST", все работает, кроме этого метода. Автозаполнение даже не распознает, и я, честно говоря, не могу понять, почему. Я пытался изменить имя метода и все. Когда я вызываю метод, он работает, я просто получаю предупреждение о том, что класс может не отвечать на этот метод.

Этот метод объявлен в моем заголовочном файле

- (void)connect:(NSString *)connection_url parameters:(NSString *)parameter_string header:(NSString *)header_type

А вот и реализация

- (void)connect:(NSString *)connection_url parameters:(NSString *)parameter_string header:(NSString *)header_type {

    NSData *request_data = [parameter_string dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
    NSString *request_length = [NSString stringWithFormat:@"%d", [request_data length]];

    response_data = [[NSMutableData alloc] init];

    NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
    [request setURL:[NSURL URLWithString:connection_url]];
    [request setHTTPMethod:@"POST"];
    [request setValue:request_length forHTTPHeaderField:@"Content-Length"];
    if([header_type isEqualToString:@""] || header_type == nil || header_type == NULL) {
        [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
    } else {
        [request setValue:header_type forHTTPHeaderField:@"Content-Type"];
    }
    [request setHTTPBody:request_data];
    [request setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData];
    [request setTimeoutInterval:10];

    NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES];
    if(!connection) {
        [self apicall_failed];
    }
    [connection release];

}

Когда я пытаюсь вызвать этот метод, XCode выдает мне следующее предупреждение

'GREST' may not respond to '-connect:parameter_string:header_type:'

Правка, вот как код вызывается:

GREST *api = [[GREST alloc] init];
[api setDelegate:self];
[api connect:@"http://domain.com" parameter_string:@"{'username':'hi'}" header_type:@"application/json"];
[api release];

Все работает нормально, но я сейчас пытаюсь избавиться от этого предупреждения. Любые идеи о том, как я могу это сделать? Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 26 мая 2011

сравнить имена методов:

'-connect:parameter_string:header_type:'

до

'-connect:parameters:header:'

разница в том, что вы используете имена аргументов метода, а не фактический метод / селектор. это приведет к исключению времени выполнения при вызове.

компилятор сообщит вам строку, в которой вы пытаетесь использовать первую, а xcode, вероятно, выделит строку.

0 голосов
/ 26 мая 2011

Изменить

[api connect:@"http://domain.com" parameter_string:@"{'username':'hi'}" header_type:@"application/json"];

на

[api connect:@"http://domain.com" parameters:@"{'username':'hi'}" header:@"application/json"];

...