2011-11-01 2 views
2

initWithContentsOfURL의 기능을 더 잘 이해하고 싶습니다. NSDictionary입니다.
이 함수는 연결 실패 자체를 관리합니다. initWithContentsOfURLNSDictionary의 참조에서
:대신 NSDictionary 'initWithContentsOfURL'을 사용하십시오. Reachability.h

- (id)initWithContentsOfURL:(NSURL *)aURL

반환 값

초기화 딕셔너리 상이 할 수있는 원래 즉에서 수신기를 포함 aURL 사전 또는 nil이면 오류가 있거나 리소스의 내용이 잘못된 사전 표현입니다.

좋아는하지만, 전달 된 URL이 유효한지 여부를 지정하지 않습니다.

하지만 내 plist의 형식이 올바른지 확인하기 위해 Reachability.h을 사용하는 대신 연결 방법을 사용할 수 있는지 여부를 확인할 수 있습니다. 물론 데이터 연결이 가능한지 이해하고 어떤 종류의 연결이 활성화되어 있는지 (예 : WiFi 등) 이해하지 않아도됩니다. 내가 비행기 모드에서 다음과 같은 간단한 테스트를 할 경우, [dict count]; 항상 TIA 0

NSURL * plist = [NSURL URLWithString: @ "http://www.example.com/example.plist"]; 
NSDictionary * dict = [[[NSDictionary alloc] initWithContentsOfURL:plist] autorelease]; 
    if ([dict count] == 0) { 
     //no connection 
    } 

을 반환하기 때문에 나는이 말을.

답변

2

네, 그렇게 할 수 있습니다. [[NSDictionary alloc] initWithContentsOfURL:plist]은 동기식 차단 호출입니다. 주 스레드를 너무 오래 차단하면 0x8BADF00D가 표시되고 감시견이 프로세스를 중단합니다.

+0

plist에는 큰 크기가 있습니까?라는 의미는 오랫동안 주 스레드를 차단할 수있는 다른 이유가 없기 때문입니다. 틀 렸으면 고쳐줘. – Mat

+0

어떤 이유로 든 네트워크 연결이 느리면 DNS 확인, 요청이 원활하지 않은 모든 네트워크 문제가 발생합니다. – logancautrell

+0

물론, "프로세스를 종료하십시오"라고 말하면 함수가 nil을 반환하거나 앱이 충돌한다는 의미입니까?! – Mat

관련 문제