분류 전체보기140 Swift - [성능최적화]final 키워드를 알아보자(static dispatch, dynamic dispatch) final 키워드 class를 정의할 때 더이상 상속하지 않는다는 의미로 final 키워드를 붙일 수 있는데 키워드를 붙임으로서 얻을 수 있는 이점을 알아보자 final 키워드의 이점 우선 첫번째로 코드를 읽는 사람과 컴파일러에게 이 클래스가 더이상 상속되지 않도록 설계되었음을 명시할 수 있습니다. 두번째로 성능향상을 기대할 수 있습니다. 성능 향상을 이해하기 위해선 direct disptach와 dynamic dispatch에 대해 알아야 합니다 static dispatch는 컴파일 시점에 호출할 함수를 결정하는 방식으로 함수를 호출 과정이 간단하는 장점이 있습니다. 반면 dynamic dispatch는 런타임 중 호출함수를 결정하는 방식으로 vtable을 참조하는 과정을 거치게 됩니다. 앱이 실행될 .. 2023. 8. 7. Xcode - 오류, Package.resolved file is corrupted or malformed 해결하기 Package.resolved file is corrupted or malformed 본문1 원인 Package.resolved파일은 Swift Package Management(SPM)를 사용할 때 Xcode가 생성하는 파일입니다. 불러온 라이브러리 내역과 버전관리 등의 내용이 저장되어 있습니다 git merge 혹은 pull 과정에서 Package.resolved 파일이 충돌되면서 나타난 문제입니다. 해결방법 1. 파일을 직접 삭제해준 후 빌드를 통해 파일을 다시 생성합니다 경로 : 프로젝트명.xcodeproj - project.xcworkspace - xcshareddata - swiftpm - Package.resolved 패키지 내용 보기를 누르면 패키지 내부로 들어갈 수 있습니다. 해당 경.. 2023. 6. 2. [Swift] COW(Copy-On-Write) COW (Copy-On-Write) Wirte발생시 Copy한다 COW (Copy-On-Write) Swift에서 Array, String, Int, Double 등 대부분의 자료형은 Value Type인 Struct으로 구현되어 있습니다. 값타입의 데이터 모두에게 새로운 공간을 할당하고 복사하는 것은 굉장한 비용이 발생하므로 copy-on-write (cow)라는 최적화 기법이 사용됩니다. cow는 수정되기 전 까지는 동일한 메모리를 참조하고 수정이 일어났을 때 새로운 공간을 할당해 복사본을 만드는 것입니다 Collection인 Array를 이용한 예시입니다 동일한 값을 지닌 경우 동일한 메모리주소를 출력하고 array2에 수정이 발생하자 주소가 바뀐것을 볼 수 있습니다. import Foundatio.. 2023. 2. 24. 이전 1 ··· 4 5 6 7 8 9 10 ··· 47 다음