설정 변경들의 집합을 커밋한다고 한다.
func commitConfiguration()
beginConfiguration() 메소드를 살펴보라고.
동시에 묶여서 수행될 설정 변경사항 집합의 시작을 나타낸다.
func beginConfiguration()
이 메소드와 commitConfiguration()을 사용해서 아토믹 업데이트로 실행되고 있는 세션에 대한 다중 설정 작동을 배치(batch)할 수 있다고 한다. 이 메소드 호출 후 아웃풋 추가 혹은 제거, sessionPreset의 변경, 인풋 혹은 아웃풋 개별 속성 설정을 할 수 있다고. commitConfiguration() 호출 전까지는 변경사항 적용이 안 된다. 호출 전에 있는 것들이 한 번에 적용된다.
기기의 하드웨어 속성에 독점 접근을 요청.
func lockForConfiguration() throws
없음.
이 메소드는 실패 시 에러를 던진다.
이 메소드는 실패 시 에러를 던짐.
try 표현과 함께 호출해야 하는 메소드. 그리고 catch 구문에서 오류를 처리해야 함.
기기의 속성과 관련이 있는 하드웨어 설정 시도 전에 이 메소드를 호출해야 한다. 반드시. 기기 속성이 바뀌지 않고 남아있도록 요구하려면 잠금으로 유지해야 할 것(릴리징 대신). 그러나 불필요하게 기기를 잠금하면 다른 앱에서 기기를 공유하는 중에 캡처 퀄리티를 디그레이드할 수 있다고.
Note
iOS에서 캡처 기기의activeFormat속성을 직접 설정하는 경우 캡처 세션의preset속성을inputPriority로 변경시킨다. 이와 같은 변경이 만들어지면 세션 토폴로지를 변경한 후(즉, 캡처 인풋, 아웃풋에 대한 추가, 제거, 재정렬)startRunning()메소드 혹은commitConfiguration()메소드 호출 시 캡처 세션은 더이상 자동으로 캡처 포맷을 설정하지 않음. macOS에서 캡처 세션은 변경 이후에도 여전히 자동으로 캡처 포맷을 설정할 수 있다. macOS에서 캡처 포맷 자동 변경을 막으려면 아래처럼.
1.lockForConfiguration()메소드를 사용해서 기기를 lock.
2. 기기의activeFormat속성을 변경.
3. 세션의startRunning()메소드를 사용해서 캡처 시작.
4.unlockForConfiguration()메소드를 사용해서 기기 잠금해제.
혹은 macOS에서 세션 토폴로지 수정 후 자동 변경을 막으려면.
1.lockForConfiguration()메소드를 사용해서 기기 잠금.
2. 세션의beginConfiguration()메소드를 호출하고, 토폴로지 바꾸고,commitConfiguration()메소드 호출
3.unlockForConfiguration()메소드를 사용해 기기 잠금해제.