일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- panorama view
- 360도 이미지 뷰어
- native
- 리액트 네이티브
- 리액트
- 명시적 정체성
- 360도 이미지
- @sendable
- 스켈레톤 통합
- completion handler
- 앱 성능 개선
- launchscreen
- React Native
- 뷰 정체성
- ios
- SwiftUI
- 라이브러리 없이
- 네이티브
- Android
- 구조적 정체성
- react-native-fast-image
- launch screen
- React-Native
- data driven construct
- 뷰 생명주기
- ssot
- react
- requirenativecomponent
- 파노라마 뷰
- 360도 뷰어
- Today
- Total
목록2025/04 (6)
Neoself의 기술 블로그
클로저는 코드 내에서 전달되거나 사용할 수 있는 독립적인 기능 블록1급 객체이기 때문에 변수, 함수의 인자, 함수의 반환값으로 사용할 수 있습니다.*Kingfisher에서는 중복 다운로드 방지기능 구현을 위해 onCancelledCallback 클로저들을 배열에 보관한 후, 취소 요청이 발생하면, 해당 배열을 순회하며 콜백들을 사용합니다.캡처func makeAdder() -> (Int) -> Int { var base = 10 // [base]는 캡처 리스트로, base의 값을 복사하여 캡처 return { [base] num in return base + num }}func makeAdder() -> (Int) -> Int { var base = 10 ..

1. SwiftUI에서의 포커스 관리 방법FocusState API사용자의 주의력을 유도하기 위해 포커스의 이동을 커스텀할 수 있습니다.여기서 FocusState는 현재 포커스 위치에 따라 변화하는 상태를 의미포커스된 Field의 식별자를 보관하는 데에 사용됩니다.FocusedField 변수는 enum 타입으로 정의되며, 문자열, 정수 또는 해시 가능 값 타입을 사용할 수 있습니다.이 수정자는 포커스의 배치와 관련된 상호연결을 생성합니다.좌측 예시의 경우, 이메일 형식이 올바르지 않으면, focusedField를 .email로 설정하여 이메일 입력 필드로 포커스를 되돌리는 로직이 구현되어있으며, 빨간색 테두리가 표시되는 조건에도 이 focusedField의 상태를 활용합니다.만일 폼 데이터가 모두 유효한..

iOS 17버전 이상부터 사용할 수 있는 Scrollview에 대한 아래 개선사항을 정리하고 있습니다.여백 관리스크롤 타겟 및 위치 제어스크롤 전환 효과LazyVStack(iOS14+)감싸진 내부 콘텐츠는 초기 렌더시 모든 콘텐츠를 적극 evaluate하지 않고, 보일때마다 evaluate하여 성능을 최적화합니다.1. ScrollView와 안전 영역 및 콘텐츠 여백 관리1.1. SafeArea 스크롤 뷰는 SafeArea를 사용해 콘텐츠를 보호하고, 콘텐츠 바깥 여백으로 SafeArea를 분할해, 콘텐츠가 안전 영역 안으로 확실히 들어갈 수 있도록 합니다. 1.4. SafeAreaPadding좌측에 사용된 일반 패딩 수정자와 똑같이 동작하지만, 콘텐츠가 아니라 SafeArea에 패딩을..

1. Actor데이터를 안전하게 보관하는 상자와 같은 개념으로, 공유 mutable 상태를 보호하기 위한 동기화 매커니즘입니다.자체 상태는 프로그램의 다른 영역과 격리되며, 액터 접근을 위해선 액터를 반드시 통과하며 이때, 액터의 동기화 메커니즘은 다른 코드가 액터의 상태에 동시에 접근하지 않도록 보장합니다.속성, 메서드 초기화, 서브스크립트를 가질 수 있으며, 프로토콜을 준수하고 확장으로 보강될 수 있습니다.저레벨에서 제공하는 직렬 DispatchQueue와 NSLock처럼 상호 배제를 제공하지만, 저레벨 동기화 매커니즘과 달리 엄격한 컴파일러 오류를 통해 동기화를 안정적으로 수행할 수 있도록 돕습니다. 1.1. 동작 원리프로그램의 나머지 부분에서 인스턴스 데이터를 격리하고, 해당 인스턴스 데이터에 대..

일반 함수의 경우, completion handler를 통해 작업을 호출하면, 곧바로 스레드 제어권을 다시 함수가 갖게 되지만, async 함수는 작업이 완료되면 스레드를 일시 중단하여 함수가 갖고 있던 스레드 제어권을 시스템에 넘깁니다. 이 과정에서 호출자 즉 함수 역시 일시 중단됩니다. 만일 fetchThumbnail에서 비동기 메서드를 호출하면, 스레드의 제어권을 시스템에 넘겨주고, 시스템에게 URL Session의 data 메서드 작업을 예약해달라고 요청합니다.이 시점에서 시스템이 제어권을 가지게 되기에, 작업이 바로 시작되지 않으며, 다른 작업에 사용될 수 있습니다.설령, 늦게 시작된 다른 작업이 먼저 실행된 이후, data 메서드가 재개될 수 있습니다.이렇게 system에 의해 data 메서드..

위 예제는 비동기 및 동시성 코드를 사용하지만, 이러한 코드 작성을 용이하게 하기 위해 구조적 프로그래밍을 활용하지 못하고 있다즉, 함수가 호출되었을 때 값을 반환하지 않으며, 결과나 오류를 완료 핸들러에 전달하기 때문에, 오류 처리를 위한 구조적 제어 흐름을 사용할 수 없으며, 썸네일 처리를 위한 루프 또한 사용이 불가하다. Task- 프로그램의 실행 컨택스트- 비동기적으로 실행될 코드의 독립적인 단위- Swift 컴파일러는 이러한 태스크들을 스레드에 할당하여 병렬성을 확보- 각 작업는 다른 실행 컨텍스트(Executing Context)와 동시에 실행되며, 안전하고 효율적일 때 자동으로 병렬로 실행되도록 스케줄링됩니다.* async 함수를 호출한다고 해서 호출을 위한 새로운 작업이 생성되지 않으며,..