2016-07-28 2 views
0

Stackoverflow question에서 언급 한 리더/라이터 패턴이 UI 업데이트에 어떻게 작용합니까? UICollectionView의 데이터 소스에 대해 리더/라이터 패턴 (이 질문에서 언급 한 바와 같음)이있는 배열을 사용하는 경우 콜렉션 뷰의 삽입/삭제/재로드 메소드 호출이 사용되는 방식은 무엇입니까? 간단히 말해서, UI 부분이 어떻게 그러한 독자 (필자 패턴 코드)에 들어갈 수 있는지 알고 싶습니다.Swift : 배열 판독기 기록기 패턴 및 UICollectionView 업데이트

답변

0

UI의 모든 항목은 주 스레드에서 실행해야하며 개체 배열은 스레드로부터 안전하지 않습니다. 따라서 주 스레드가 아닌 다른 스레드에서 데이터를 편집하고 UI (주 스레드)에서 데이터를 읽는 경우 예기치 않은 문제가 발생할 수 있습니다. 링크의 리더/라이터 패턴은 쓰기가 한 번에 하나씩 (동기식으로) 발생할 수 있는지 확인하여 스레드 안전성을 보장합니다. 그런 다음 백그라운드 스레드에서 데이터 소스를 편집하고 가끔씩 앱이 손상되는 일없이 안전하게 메인 스레드의 uicollectionview를 업데이트 할 수 있습니다.

그러나 데이터 소스에 핵심 데이터 개체가있는 경우 주 스레드에서 실행되는 관리되는 개체 컨텍스트에서 개체를 가져와야합니다. 백그라운드 스레드에서 실행되는 관리 객체 컨텍스트를 사용하여 데이터를 편집하는 경우 변경 사항을 상위 컨텍스트로 푸시 한 다음 데이터를 사용하여 콜렉션 뷰를 업데이트하기 전에 주 스레드에서 실행되는 moc를 사용하여 변경 사항을 읽어야합니다 . 이 경우 리더/라이터 패턴은 도움이되지 않습니다.

관련 문제