728x90
이슈
iWaver 프로그램을 개발하는데 이슈가 있었습니다.
저희 프로그램에 있는 기능 중에 유저가 선택한 파일 경로를 보여주는 기능이 있습니다.
아래 GIF를 보시면 선택된 폴더로 저장위치가 바뀌는 것을 볼 수 있습니다.
여기서 이슈가 발생했습니다..!
아래 GIF를 보시면 코드가 한 번만 실행이 되어도 되는 코드인데 계속 여러번 반복 되어서 실행이 되었어요 😲
이 문제의 원인은 바로 View안에 함수가 들어가 있기 때문입니다!
View안에 함수가 들어가게 된다면 아래 같은 문제가 발생하게 됩니다.
해당 함수가 호출될 때마다 View가 변경되었다고 판단하여 다시 렌더링을 수행하게 됩니다.
이것이 필요한 동작이 아니라면 불필요한 리렌더링으로 성능에 영향을 줄 수 있습니다.
저희 같은 경우 아래 코드가 View 안에 들어가 있었기 때문에 View가 랜더링 될 때마다 getLastDir 함수가 실행이 되는 것 입니다..!! 🤯🤯🤯🤯
Text("\\(getLastDir(savePath: saveFileVM.numbersFile.savePath))")
해결
View안에 있는 함수를 NSOpenPanel 에서 폴더를 지정하고 확인을 눌렀을 때 실행 할 수 있게 바꿔주었습니다
그 결과 View와 관련없이 여러 번 실행이 안되게 바뀌었습니다..! 👍🏻👍🏻👍🏻👍🏻👍🏻
private func selectFolder() {
let dialog = NSOpenPanel();
dialog.showsResizeIndicator = true;
dialog.showsHiddenFiles = false;
dialog.canChooseFiles = false;
dialog.canChooseDirectories = true;
dialog.canCreateDirectories = true;
if (dialog.runModal() == NSApplication.ModalResponse.OK) {
let result = dialog.url
if (result != nil) {
let path: String = result!.path
print("path result: \\(path)")
isButtonActive = true
saveNumbersFilePath = getLastDir(savePath:path)
}
} else {
// User clicked on "Cancel"
return
}
}
728x90
'SwiftUI > 개발' 카테고리의 다른 글
[Swift] Memory Leaks 해결 (0) | 2024.09.19 |
---|---|
[SwiftUI] UI 최적화 문제 (1) | 2024.01.12 |
[Swift] 이미지 저장 기능 (0) | 2023.10.31 |
[Swift] 폴더 이름 중복 검사 (1) | 2023.10.28 |
[SwiftUI] View가 멈추는 현상 (0) | 2023.10.25 |