2012-11-12 3 views
0
여기

내 코드입니다 :NSURL 요청? 등록 및 로그인

//login method 
- (int) authenticateClient { 
NSString *loginWeb = [NSString stringWithFormat:(@"http://192.168.118.1/login.php?uname=%@&pass=%@&submit=Log%%20In"), user, pass]; 
NSURL *login = [NSURL URLWithString:loginWeb]; 
NSData *loginData = [NSData dataWithContentsOfURL: login]; 
NSString *result = [[NSString alloc] initWithData:loginData encoding:NSUTF8StringEncoding]; 
NSMutableURLRequest *loginRequest = [[NSMutableURLRequest alloc] init]; 
[loginRequest setURL:login]; 
[loginRequest setTimeoutInterval:1]; 

NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:loginRequest delegate:self startImmediately:YES]; 
[connection start]; 
    return [result integerValue]; 
} 

내 질문은 네트워크 연결이없는 시뮬레이션 할 때, 내 애플 리케이션가 정지되고, 단지보고 (지정된 간격으로 1 초 시간을로드하지 않거나 작동한다면).

시작에 대한 내용을 읽으면 즉시 현재 위협에 대해 실행되도록 강제 조치가 완료 될 때까지 모든 다른 작업을 "일시 중지"합니다.

나는 두 가지 질문이 있습니다

1) URL이 기본적으로 대신 모든 것을 일시 중지의 백그라운드에서 실행해야하는 더 나은 방법은 무엇입니까?

2.) 어떻게 실제로 작동하는 타임 아웃 방법을 얻을 수 있습니까?

많은 감사! 감사!

+0

질문에 의미가 없습니다. 두 가지 코드를 사용하여 동일한 작업을 수행하려고합니다. NSURLConnection이 이미 시작되었을 때 NSURLConnection을 시작할 필요가 없습니다. –

답변

0

글쎄, 시간 초과로 1 초가 정말 낮습니다. 다른 네트워크 조건을 시뮬레이트하려면 this과 같은 것을 사용할 수 있습니다. 연결이 이미 시작된 이후,

NSData *loginData = [NSData dataWithContentsOfURL: login]; 
NSString *result = [[NSString alloc] initWithData:loginData encoding:NSUTF8StringEncoding]; 

당신이이 필요하지 않습니다 : 당신이 춤을 할 필요가 없습니다 또한

[connection start]; 

documentation에서 :

NSURLConnectionDelegate 프로토콜 프로토콜에 정의 된 NSURLConnection의 대리자 메서드 - 개체가 비동기식로드에 대한 정보 용 콜백 을 수신 할 수있게합니다. URL 요청 다른 대리자 메서드는 대리자가 에 비동기 URL로드를 수행하는 프로세스를 사용자 지정할 수있는 기능을 제공합니다. 이러한 대리자 메서드는 연결된 NSURLConnection 개체에 대한 비동기 적로드 작업을 시작한 스레드에서 호출됩니다. 귀하의 질문에 대한 그래서

:

  • NSURLConnection’s 대표
  • 확인 this & this를 구현합니다.
+0

이 말은 싫지만이 답변을 완전히 이해하지 못합니다 ... 다음과 같은 예를 보여줄 수있는 방법이 있습니까? 암호? 연결을 할 수없는 경우에도 내 앱이 정지되고 기본/최소 시간 초과 방법은 240 초입니다 (따라서 불행히도 1 초는 부적합합니다). 사용자가 메서드가 4 분 동안 시간 초과 될 때까지 기다리지 않고 연결 메서드가 성공하거나 실패 할 때까지 스레드가 고정되면 카운트 다운 타이머를 사용할 수 없습니다. :( –

관련 문제