XCode无法识别自定义方法

时间:2011-05-26 00:47:38

标签: xcode nsobject

我有一个名为“GREST”的自定义NSObject类,除此方法外,一切都有效。自动完成甚至不会识别它,我真的无法弄清楚为什么。我试过改变方法的名字和一切。当我调用该方法时,它可以工作,我只是得到警告,该类可能不响应此方法。

我在头文件中声明了这个方法

- (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 个答案:

答案 0 :(得分:1)

比较方法名称:

'-connect:parameter_string:header_type:'

'-connect:parameters:header:'

不同之处在于您使用的是方法参数的名称,而不是实际的方法/选择器。这将在调用时导致运行时异常。

编译器将告诉您尝试使用前者的行,xcode可能会突出显示该行。

答案 1 :(得分:0)

更改

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

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