"네 앱만 파일을 만지는 게 아니야. Finder 도 Dropbox 도 iCloud 도 Spotlight 도 같은 방에 있어. 맞추든가 부딪히든가야."
파일은 모두가 같이 써
파일 코드를 짜다 보면 내 앱만 디스크를 만지는 것처럼 쓰게 돼. 절대 아니야. Waygate 가 폴더를 읽는 동안 Finder 가 그 안 파일 이름을 바꾸고 있을 수도, 동기화 클라이언트가 내려받은 걸 쓰고 있을 수도, Spotlight 이 색인을 만들고 있을 수도, 클라우드가 파일을 내려받고 있을 수도 있어. 그걸 전혀 의식 안 하고 읽으면 쓰다 만 파일을 잡거나 동기화와 부딪혀 엉뚱한 그림을 보게 돼.
NSFileCoordinator 가 그 악수야
macOS 는 서로 맞추는 방법을 줘. NSFileCoordinator. 읽거나 쓸 거라고 시스템에 알리면, 같이 맞추기로 한 다른 참여자들 — file provider 나 다른 앱 — 이 잠깐 멈추거나 쓰던 걸 마무리하거나 비켜줘. 클라우드가 건드릴 수도 있는 파일을 제대로 읽어야 할 때 Waygate 는 이걸 써. 그래야 반쯤 적용된 상태가 아니라 정리된 상태를 보거든. 속도가 아니라 여럿이 같이 쓸 때의 정확함 얘기야.
반대로 알림도 받아
맞추는 건 양방향이야. NSFilePresenter 를 쓰면 지금 보여주고 있는 게 곧 바뀔 거라는 알림도 받을 수 있어. 그럼 폴더를 다시 읽거나, 한 줄을 갱신하거나, 연결 끊김으로 바꾸면 되지. 맞춘다는 건 Waygate 자기 읽기만 지키는 게 아니라, 같이 쓰는 파일시스템에 정직하게 참여해서 화면이 남들이 바꾸는 진짜와 발맞춰 가게 하는 일이야.