일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- HIG
- Observable
- map
- tableView
- swiftUI
- Refactoring
- ribs
- uiscrollview
- 리펙터링
- swift documentation
- Xcode
- RxCocoa
- Clean Code
- 리펙토링
- UICollectionView
- uitableview
- SWIFT
- Protocol
- Human interface guide
- ios
- 클린 코드
- clean architecture
- combine
- UITextView
- collectionview
- 스위프트
- 애니메이션
- rxswift
- MVVM
- 리팩토링
- Today
- Total
목록SWIFT (948)
김종권의 iOS 앱 개발 알아가기
낮은 수준의 성능을 야기하는 요소 4가지1) Function call - 최적화 되지 않은 많은 함수 호출2) Memory allocation - 메모리 할당에 너무 많은 시간을 소비3) Memory layout - 데이터가 표현되는 방식 때문에 많은 시간이나 메모리 낭비4) Value copying - 불필요하게 값을 복사하고 파괴하는데 많은 시간을 소비* 1), 2)번 내용은 이전 포스팅 참고3) Memory layoutmemory layout이란?메모리를 할당한 후 해당 메모리를 사용하여 값을 저장하는 방법메모리 에서의 representaion이라는 개념representation은 메모리 안에서 value를 어떻게 바라보는가를 의미아래 코드에서 array는 메모리 관점에서 "두 개의 double 값..
value를 사용할때의 ownershipvalue를 사용하면 어떻게든 소유권 시스템을 갖음var array = [1,2,3] // array는 [1,2,3]에 관한 소유권을 갖음소유권 시스템값을 소비(consume)하거나 변경하거나(mutate) 빌리는(borrow) 것Consuming values 개념representation의 소유권을 한고셍서 다른 곳으로 이전한다는 의미value를 넘길때 consuming 파라미터를 사용하여 구현ex) 아래 코드에서 발생하는 consuming 이해하기array에 값을 assign할 때, 초기 값의 소유권을 array 변수로 이전함array입장에서 초기값의 소유권을 갖게되므로 "consuming" 함func makeArray() { var array = [1.0, ..
낮은 수준의 성능을 야기하는 요소 4가지1) Function call - 최적화 되지 않은 많은 함수 호출2) Memory allocation - 메모리 할당에 너무 많은 시간을 소비3) Memory layout - 데이터가 표현되는 방식 때문에 많은 시간이나 메모리 낭비4) Value copying - 불필요하게 값을 복사하고 파괴하는데 많은 시간을 소비-> Swift perfomance는 대부분 위 4가지 비용 중 하나 이상에 영향을 미침성능 1) Function call무의식적으로 사용하는 코드중 성능에 영향을 주는 Function call 요소인수, 함수의 주소, 메모리 로컬 상태에 함수 정보 할당Call dispatchstatic dispatch: 컴파일 타임에 우리가 호출하는 함수를 정확히 알..
Multiline String Literal 개념문자열을 표시할 때 따옴표 3개로 표현하는 것label.text = """abcdef ab123456가나다라"""이 방법을 사용할 때 가끔 indent에 대해서 헷갈리는 경우가 있는데, indent는 끝 따옴표 """의 시작 지점이 0 indent라는 것을 알기ex) 아래 코드들 모두 화면에서는 동일하게 보임 label.text = """abcdef ab123456가나다라"""label.text = """abcdef ab123456가나다라"""label.text = """ abcdef ab 123456 가나다라 """만약 마지막 """ 따옴표를 기준으로 칸이 띄어져 있으면 그만큼 indent가..
Widgets and Live Activities기존에 iOS에만 있던 Live Activities 기능이 watchOS에서도 추가됨iOS 기반의 Live Activities가 자동으로 Apple Watch에 표출supplementalActivityFamilies에 small과 medium을 적용하여 watchOS에서 한 번에 더 많은 가사를 표출custom containers - 새로운 ForEach(subviewOf:)ForEach의 새로운 API인 ForEach(subviewOf:)를 사용하면 재귀적으로 하위뷰를 접근하여, 계속 뷰가 위에 쌓이는 UI구현이 가능 * container 관련 UI 구체적인 개념은 WWDC24 Demystify SwiftUI containers 참고Ease of use ..
Side bar UI 진화 (TabView)iOS 18.0에서는 사이드바에서 특정 버튼을 누르면 상단으로 메뉴가 이동됨또 사용자가 항목을 재정렬 할 수 있는 기능이 추가됨사용자가 자주 사용하는 옵션과 사용하지 않는 옵션을 원하는데로 커스터마이징 할 수 있게 제공Side Bar 상단 메뉴 전환 옵션 적용 방법TabView로 감싸진 코드에, tabViewStyle(.sidebarAdaptable)를 사용탭 재정렬 및 제거와 같은 옵션 적용 방법tabViewCustomization() 사용(이렇게 적용하면 macOS, tvOS에서도 자연스럽게 적용됨)tvOS에서 적용된 모습macOS에 적용된 모습* 이 밖의 tabView에 관한 구체적인 내용은 WWDC24 Improve your tab and sideba..
Explicit Modules단 한줄의 코드도 변경하지 않고 빌드 향상이 가능더 빠른 디버깅 제공C와 Objective-C의 경우에는 Explicit Modules 기능이 디폴트로 on 되어있고, Swift는 build setting에서 설정 필요Explicit Modules 컴파일 단계explicit built modules를 yes로하면 각 컴파일 단위의 처리를 3단계로 처리ScanBuild ModulesBuild SourceScan단계와 Build Modules 단계는 빌드 로그에서 표시된 것을 확인 가능"Scan Dependency", "Compile Clang module", "Compile Swift module" 커멘드로 표출이전에는 원래 이 단계들이 소스 파일 컴파일의 일부로, 암시적으로 ..
Code Completion (자동완성)Copilot과 유사하게 자동완성 기능을 제공빌드세팅 - Isolated Global Variables전역변수는 Concurrency에서 안전하지 않다는 warning 표출해주는 옵션위 옵션을 키고 빌드 시 warning 확인 가능간편한 프리뷰 - @Previewable아래와 같은 RobotFaceSelectorView를 프리뷰 사용할 때 currentFace에 관한 바인딩이 필요한 상황기존에는 위 뷰를 preview하려면 wrapper view를 만들어서 currentFace를 바인딩시켜야함ex) 기존 방법struct Simple_Previews: PreviewProvider { struct ContainerView: View { @State ..