URL에 동기화 또는 비동기 연결을 설정하고 데이터를 검색하는 데 사용할 수있는 NSURLConnection
클래스를보고있었습니다 ...이 클래스에 많은 변경이있었습니다. IOS 5 및 인증 또는 다운로드와 관련된 공식 프로토콜을 소개 한 것을 보았습니다. 예를 들어 connection:didReceiveResponse:
메시지 (이전에 위임자에게 전송되었지만 더 이상 사용할 수없는 메시지)가 여전히 표시되는 경우에는 표시되지 않습니다. 일부 프로토콜에서 사용할 수 있습니다. 응답을 받자 마자 비동기 연결을 구현하고 예를 들어 HTTP 헤더를 검색하는 방법은 무엇입니까? 나는 NSURLConnection
을 connection:didReceiveResponse:
메시지와 함께 사용하는 것보다 낫다는 것을 확신합니다. stringWithContentsOfURL
과 같은 메소드는 항상 컨텐츠를 동 기적으로로드합니까? 더 이상 사용되지 않는 메소드를 피하고 응용 프로그램에서 비동기 다운로드를 구현하는 데 사용하는 경우 _http response received_m 등의 이벤트에 반응합니까? 가능한 경우 백그라운드 작업에서 동기 다운로드를 실행합니까?NSURLConnection 메서드는 IOS5에서 더 이상 사용할 수 없습니다
답변
NSURLConnectionDelegate
은 공식 프로토콜이되었습니다 (이전 버전에서는 비공식 프로토콜이었습니다). 이 프로토콜에서, 다음의 (비되지 않음) 방법이 선언된다
connection:didFailWithError:
connectionShouldUseCredentialStorage:
connection:willSendRequestForAuthenticationChallenge:
게다가, NSURLConnectionDelegate
준수 개의 하위 프로토콜 존재
NSURLConnectionDataDelegate
은 데이터를 메모리에로드하는 대리자에 사용되며 다음과 같은 metho 나는 확신 일부 DS, 당신은 잘 알고 찾을 수 있습니다 :
connection:willSendRequest:redirectResponse:
connection:didReceiveResponse:
connection:didReceiveData:
connection:needNewBodyStream:
connection:didSendBodyData:totalBytesWritten:totalBytesExpectedToWrite:
connection:willCacheResponse:
connectionDidFinishLoading:
NSURLConnectionDownloadDelegate
는 디스크 파일에 직접 데이터를 저장하는 대표단을 위해 사용되며, 다음과 같은 방법을 선언한다 :
connection:didWriteData:totalBytesWritten:expectedTotalBytes:
connectionDidResumeDownloading:totalBytesWritten:expectedTotalBytes:
connectionDidFinishDownloading:destinationURL:
당신이 볼 수 있듯이을 , 당신은 여전히 약간의 수정과 함께 이전 대의원을 사용할 수 있습니다.
자세한 내용은 로컬 Xcode 설치에서 iOS 4.3 to iOS 5.0 API Differences document 및 NSURLConnection.h를 참조하십시오. 새로운 SDK 버전이 출시되면 헤더 파일 안의 문서가 개발자 라이브러리에서 제공되는 문서보다 더 안정적입니다. 후자가 최신 상태를 유지하는 데 시간이 걸립니다.
고맙습니다 ... 참고 문서가 아직 업데이트되지 않았으므로 API 차이점 문서와 헤더 파일은 좋은 출발점입니다. 어딘가에서 본 것으로 생각했습니다 (지금은 찾을 수 없습니다). ..) 그 문서는 일반적으로 귀하의 애플 리케이션은 NSURLConnectionDataDelegate 프로토콜을 구현해서는 안된다고 ... 제가 틀렸다면 말해 : 다운로드 진행률 표시 줄의 일종을 구현 해야하는지, 당신 didReceiveData를 사용해서는 안된다 ' 약간의 데이터를 다운로드했거나 didReceiveData가 작동하는 방식과 전송 된 시점을 오해 했습니까? –
@Gianni 예, '- ... didReceiveData :'가 데이터를 수신했음을 알리기 위해 델리게이트로 전송됩니다. 이러한 데이터를 저장하는 것 외에도 다운로드 진행률 표시 줄을 업데이트하는 데 사용할 수 있습니다. –
FYI 04/08/12 현재 5.1 SDK 설명서에는 NSURLConnectionDataDelegate (온라인도 SDK도 포함하지 않음)에 대한 완전한 참조가 없습니다. –
방금이 동일한 문제가 발생했습니다. 블록 및 NSOperationQueue
을 사용하면 비동기 요청을 보내는 것이 더 단순 해 보입니다.
+ (void)sendAsynchronousRequest:(NSURLRequest *)request queue:(NSOperationQueue *)queue completionHandler:(void (^)(NSURLResponse*, NSData*, NSError*))handler
이것은 이제 대리인이 인증 및 오류 문제에만 사용됨을 의미합니다.
감사합니다. 참조 문서에서 찾을 수 없습니다. 곧 업데이트 될 것입니다. –
일반적으로 업데이트됩니다. 그러나이 방법은 iOS 4.3에서 사용할 수 없기 때문에주의하십시오. 요약하면 : iOS 4.3 및 iOS 5.0과 호환되도록 두 가지 방법을 모두 구현해야합니다. –
심지어 나는 그것은 여기
NO 이상 사용할 수 있었어야 Apple 웹 사이트
에 문서를 발견 havent 한! Apple 라이브러리를주의 깊게 살펴보면 인증 및 오류 문제에 사용하도록 제한되지 않습니다.
NSConnection 클래스 객체에 +(void)sendAsynchronousRequest:queue:completionHandler:
도입 이후, 이전과 같은 많은 NSConnectionDelegate
방법을 수행 할 수있는 많은 것들이 지금 NSURLConnection
방법에 더 많은 기능을 추가하기 위해 새로운 공간을 열어 & NSConnectionDownloadDelegate
"NSConnectionDataDelegate
"라는 공식 프로토콜로 사용할 수 있습니다. (iOS5에서)
그래서 나는 그것의 사용을 제한하지 않는 개선이라고 생각합니다.
- 1. IOS5에서 코어 데이터베이스를 사용할 수 없습니다
- 2. 더 이상 rebase 할 수 없습니다. - 대화 형 더 이상
- 3. TYPO3 더 이상 새 확장 프로그램을 사용할 수 없습니다.
- 4. forall 구조 뒤에 정수 변수를 더 이상 사용할 수 없습니다.
- 5. IOException에서 복구 중 : 네트워크 이름을 더 이상 사용할 수 없습니다.
- 6. 채널 1이 폐쇄되었습니다. 더 이상 사용할 수 없습니다! (AMQP :: ChannelClosedError)
- 7. 이 SqlTransaction이 완료되었습니다. 더 이상 사용할 수 없습니다
- 8. 어떻게 수정합니까? formtastic : label_method는 더 이상 사용할 수 없습니다.
- 9. 구매하려고하신 아이템을 더 이상 사용할 수 없습니까?
- 10. iOS5에서 NSURLConnection 시간 초과에 관한 상황은 무엇입니까?
- 11. IOS5에서 objectAtIndexedSubscript를 사용할 수 있습니까?
- 12. Xcode 4에서 더 이상 보관할 수 없습니다.
- 13. 데비안은 더 이상 이메일을 보낼 수 없습니다.
- 14. 더 이상 프로세스 목록을 볼 수 없습니다.
- 15. NSURLConnection 연결 : didReceiveData : ios5에서 호출되지 않았습니다.
- 16. 더 이상 사용되지 않는 스레드 메서드는 stop() 메서드가 지원되지 않습니다.
- 17. OpenSL ES를 사용할 때 "더 이상 트랙 이름을 사용할 수 없습니다."
- 18. 더 이상
- 19. VS 2010에서 FAXCOMEXLib을 더 이상 사용할 수 없습니까?
- 20. Visual Studio Express에서 더 이상 디버그 할 수 없습니다.
- 21. 확장명을 .mm으로 변경하면 더 이상 머리글을 찾을 수 없습니다.
- 22. Sonatype Nexus - 관리자 사용자와 더 이상 로그인 할 수 없습니다.
- 23. Visual Studio 디자인보기에서 컨트롤을 더 이상 편집 할 수 없습니다.
- 24. 더 이상 ActiveSupport :: HashWithIndifferentAccess로 직렬화 할 수 없습니다.
- 25. Info.plist가 "Info"에 없습니다 - Tab 더 이상
- 26. 양식을 만들 때 필드 세트를 더 이상 사용할 수 있습니까?
- 27. 웹에서 스프링 빈 스키마를 더 이상 사용할 수 없습니까? 브라우저에서
- 28. Rails 3 뷰에서 view_context를 더 이상 사용할 수 없습니까?
- 29. 자바 예외가 발생하면 더 이상 jqgrid를 실행할 수 없습니다.
- 30. AWS EC2에 NPM 설치 : Sudo를 더 이상 찾을 수 없습니다.
귀하의 질문은 여러 질문으로 나눠 져야합니다. 귀하의 질문에 5 가지 질문이있을 수 있습니다. 내 대답은 내가 가장 중요하게 생각하는 것, 즉 iOS 4.3에서 사용할 수 있었던 연결 대리자 메서드의 명백한 제거를 다룹니다. –