Вот проблема, я использую http-запрос, но когда я использую NSURLConnection, чтобы получить свой xml-файл и установить переменную NSString * xml с этим xml-файлом, я получаю ошибку указателя блока, если я вернусь Это. Но если я возьму NSString * xml и отправлю его методу, он ничего мне не говорит, и переменная xml хорошо установлена. Также, если я верну в конце моего метода переменную, я получаю нуль при родительском методе вызова. Как я могу это исправить, потому что требуется возврат переменной. Спасибо за любую помощь, а вот мой код: Ошибка:Ошибка NSURLConnection и указателей
incompatible block pointer types sending 'NSString *(^)NSURLResponse *, NSData *, NSError *)'to parameter of type 'void(^)(NSURLResponse *,NSData *, NSError *)'
- (NSString *)restTestRequester: (NSString *)uriRequested serviceUri:(NSString *)sUri parameters:(NSString *)uriParameters technique:(NSString *)requestTechnique {
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSString *l_api_key = [prefs stringForKey:@"globalPublicK"];
NSString *l_secret_key = [prefs stringForKey:@"globalSecretK"];
l_uri = [NSString stringWithFormat:@"%@/%@", uriRequested, sUri];
NSMutableURLRequest *theRequest=[NSMutableURLRequest requestWithURL:[NSURL URLWithString:l_uri]
cachePolicy:NSURLRequestReloadIgnoringLocalCacheData
timeoutInterval:60.0];
[theRequest setHTTPMethod:requestTechnique];
[theRequest setValue:@"application/xml" forHTTPHeaderField:@"Accept"];
[theRequest setValue:@"application/x-www-form-unrlencoded" forHTTPHeaderField: @"Content-Type"];
[theRequest setValue:l_api_key forHTTPHeaderField: @"EMApikey"];
[theRequest setValue:[self hmacsha1:l_uri secret:l_secret_key] forHTTPHeaderField: @"EMRequestHash"];
NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
if(theConnection)
{
[NSURLConnection sendAsynchronousRequest:theRequest
queue:[NSOperationQueue mainQueue]
incompatible block pointer types error--> completionHandler:^(NSURLResponse *response, NSData *data, NSError *error)
{
here ---->xml = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]
autorelease];
works--->[self myMethod:xml];
doesn't work---> return(xml);
}
];
}
else
{
NSLog(@"theConnection is NULL");
}
[theConnection release];
equals nil variable returned-->return xml;
}
Вы не используете ARC? – Holly
Нет дуги, почему это источник проблемы? –
Я верю, что переменная xml не сохраняет правильно создать переменную экземпляра с помощью setter и getter и проверить? –