객관적인 C 언어의 초보자인데 웹 서버를 쿼리하고 반환되는 문자열을 콘솔에 표시하는 함수를 구현하고 있습니다. 루프에서 반복적으로 함수 (getDatafromServer)를 호출합니다. 문제는 처음에는 값을 얻는 반면 다른 시간에는 콘솔에서 나 (null)를 반환한다는 것입니다 ... 포럼에서 메모리 관리 및 체크 아웃을 검색했지만 아무도 작동하지 않았습니다. 너희들이 아래의 코드에서 어디서 잘못되었는지 말해 줄 수 있니? 이 기능에 오토 릴리즈 풀을 사용하고, '복귀'후를 해제 나쁜 생각입니다 미리 감사드립니다 ....목표 C : 처음 호출 할 때 올바른 데이터를 반환하는 함수와 다른 시간을 반환하는 경우 null
@implementation RequestThread
+(void)startthread:(id)param{
while (true) {
//NSLog(@"Test threads");
sleep(5);
NSLog(@"%@",[self getDatafromServer]);
}
}
+(NSString *) getDatafromServer{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSString *myRequestString = @"name=Hello%20&[email protected]";
NSData *myRequestData = [NSData dataWithBytes:[myRequestString UTF8String] length:[myRequestString length]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL: [NSURL URLWithString:@"http://192.168.1.32/gs/includes/widget/getcalls.php?user=asdasd&passw=asdasdasd"]];
[request setHTTPMethod:@"POST"];
[request setHTTPBody: myRequestData];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"content-type"];
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *myString = [NSString stringWithUTF8String:[returnData bytes]];
[myRequestString release];
[request release];
[returnData release];
return myString;
[pool release];
}
@end
안녕하세요 JeremyP, 답변 해 주셔서 감사합니다. 코드를 변경했지만 그 결과는 동일합니다. 첫 번째 iteraction에 대한 가치를 얻으려고하기 전에는 제외하고 이제는 첫 번째와 8 번째에 도달했습니다. 우리가 올바른 경로에있는 것 같아요 ... 서버에서 응답을 UTF8, 나는 올바르게 전에 그것을 .. 설정 한 함수를 한 번 사용하면 잘 작동하지만 두 번째 또는 더 많은 호출 잘 작동하지 않습니다. ... – KooshalB