저는 Swift 3으로 변환 된 프로젝트의 기존 Swift 코드를 정리하는 작업을했습니다. 그러나이 문제가 계속 의심 스럽습니다. 여기 NSOperationQueues는 할당 해제되기 전에 항상 대기열을 완료합니까?
OperationQueue().addOperation(someOperation)
는
- ... 내가 가지고있는 문제/문제입니다 큐 인스턴스가 생성되어 바로 사용됩니다. 그곳에 대한 참조는 다른 곳에 사용하기 위해 저장되지 않습니다.
- 위와 같이 인해 대기열에 하나의 작업 만 있으므로 대기열을 사용하는 이유는 무엇입니까?
- 아무도 대기열에 대한 참조를 보유하고 있지 않으므로 ARC에서 즉시 할당을 해제하지 않아야하며, 그렇다면 지금 실행중인 작업 자체는 어떻게됩니까? 중단되거나 중단되거나 아직 완료 되었습니까?
어쨌든, 나는 뭔가를 놓치고 있는지 또는이 코드를 이해하게하는 NSOperationQueue 및 NSOperations의 '기능'을 모르고 있는지 궁금합니다. 누구든지이 일에 대해 비추어 줄 수 있습니까, 아니면 이것이 나쁜 습관이라고 생각합니까?
나의 점 2에 관해서, 나는 그것을 게시하자 마자 그 실수를 깨달았지만 회의에 부딪쳤다. 지금 바로 수정하십시오 ... – MarqueIV
대기열의 목적은 백그라운드 스레드에 도달하는 것입니다. 이는 정상적인 상황에서 GCD를 직접 사용하여 수행 할 것이라고 말했습니다. 그러나 NSOperation을 사용하면 GCD만으로는 할 수없는 일을 할 수 있으며 이러한 상황에서는 이와 같은 패턴을 사용할 수 있습니다. GCD는 상대적으로 새로운 반면 NSOperation은 훨씬 더 긴 역사를 가지고 있음을 명심하십시오. 따라서이 패턴은 희미한 과거 (단지 추측)에서 커질 수 있습니다. – matt