2016-07-14 6 views
1

셀이 나타날 때 하나씩 원격 서버에서 데이터를 다운로드 할 수있는 UITableView가 있습니다.셀당 또는 UIViewController 당 하나의 NSOperationQueue?

셀 당 하나의 NSOperationQueue를 만드는 것이 안전합니까? 스레드가 너무 많으면 스레드가 폭발 할 수도 있습니다. 일단 셀이 다시 사용되면 NSOperationQueue에 대한 모든 작업을 취소 할 수 있기 때문에 셀 인스턴스 당 NSOperationQueue를 갖는 것이 개발하기 쉽습니다.

대조적으로 UIViewController 당 하나의 NSOperationQueue를 사용하면 NSOperationQueue를 셀에 전달할 수 있으며 셀은 NSOperation을 해당 큐에 추가 할 수 있습니다. 하지만, 어떤 식 으로든 그 셀을 다시 사용할 때 해당 작업을 취소 할 수 있도록 처리해야합니다 (UIViewController, 등 내부 사전에 NSOperation 참조 저장).

대부분의 자습서에는 UIViewController에서 하나의 NSOperationQueue가 있지만 각 셀에 대해 하나의 NSOperationQueue를 사용하는 곳을 보았습니다.

+0

애플의 https://developer.apple.com/library/ios/samplecode/LazyTableImages/Introduction/Intro.html의 예가 바로 그 예입니다. –

+0

안녕하세요 @MikeAlter 다른 이유가 있습니까? Apple 샘플 코드가이 방법을 사용하거나 다른 방법으로도이 방법을 사용하기 때문이 아닙니까? 덕분에 –

+0

나는 그 예제를 구현, ws 전화 및 이미지 다운로드의 방식은 최고이며 또한 성능 친화적이다 –

답변

0

아래의 자습서에서는 취소 작업 옵션을 제공하고 요구 사항에 따라 작업을 다시 시작합니다.

레이 Wenderlich에서 좋은 예 : http://www.raywenderlich.com/19788

업데이트 :

당신은 UITableView에서 NSOperationQueue 다음 당신은 제대로 관리 할 필요가 사용하는 경우. 예를 들어, AFNetworking 라이브러리는 URL에서 이미지를 다운로드하고 잘 작동하는 다른 작업에 NSOperationQueue을 사용합니다. 그래서 제 제안은 을 UITableView에 사용하고 적절하게 관리하면 향후 장시간 데이터를 처리 할 때 문제가 발생할 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 그러나 나는 그렇게 할 것을 부탁하지 않는다. 어떤 방법이 더 좋은지 알고 싶습니다. 그리고 각 셀에 대해 NSOperationQueue를 사용할 때 위험이 있다면요. –

+0

셀 하나의 테이블 뷰에 많은 다른 행이 표시 될 수 있으므로 셀당 하나의 NSOperationQueue가 달성하려는 목표를 달성하지 못할 수도 있습니다. – gnasher729

+0

@ gnasher729이 작업을 수행 할 수 있습니다. 질문 설명을 보면 셀을 다시 사용할 경우 셀의 NSOperationQueue의 모든 작업을 취소한다고 설명했습니다. 예를 들어 시작 부분에 행 1을 표시하고 행 1의 NSOperation이 진행 중이더라도 화면이 사라지고 행 10에 다시 사용되면 행 1에 대한 NSOperation이 취소되고 행 10에 대해 새 NSOperation을 추가합니다 . –