apple 223

iOS Translation Framework

iOS Translation Framework iOS 18.0 +Xcode 16 이상에서 작업 Overview 앱 내 번역 기능을 제공하기 위해 Translation 프레임워크를 사용할 수 있음.시스템이 사용자를 대신하여 번역을 제안하는 기본 UI를 사용할 수 있으며, 사용자가 별도의 설정 없이도 쉽게 번역 기능을 이용.또한, 이 프레임워크를 사용하여 번역 경험을 사용자 맞춤형으로 유연하게 조정할 수도 있음.Translation 프레임워크를 활용하는 방법에는 두 가지가 존재.시스템이 제공하는 기본 번역 UI를 사용: 하여 사용자가 손쉽게 번역을 적용할 수 있도록 합니다. 이 경우 시스템이 자동으로 번역 옵션을 제공하며, 개발자는 별도의 UI를 설계할 필요가 없습니다.사용자 맞춤형 번역 경험 제공: Tra..

swift @_spi (System Programming Interfaces)

swift @_spi (System Programming Interfaces) api와 spi 정의api란? swift에서 사용할 수 있는 Application Programming Interface의 약자.spi란?api 중 일부는 특정 클라이언트에게만 제공.spi는 실험적.apple에서 밑줄 있는 속성은 사용하지 말라고 권장. 밑줄 있는 속성의 의미는 변경될 수 있고 안정화 전에 Swift의 진화 과정을 거칠 확률이 높음.spi의 경우 기존 접근제어자보다 우선순위가 높음.  spi 선언public class PaymentFeature { public func pay() async {} @_spi(bitcoin) public func payWithBitCoin() async {..

CloudKit 정리 코드 예제 #3

CloudKit 정리 코드 예제 #3CloudKit 정리 환경설정 #1https://rldd.tistory.com/607CloudKit 정리 이론 #2https://rldd.tistory.com/619CloudKit 정리 코드 예제 #3https://rldd.tistory.com/631목차아이클라우드 권한 체크CloudKit 코드 기본 설정데이터 저장데이터 수정데이터 삭제데이터 불러오기서버 변경 사항이 있는지 토큰값을 기반으로 변경사항 체크데이터 로드아이클라우드 권한 체크아이클라우드 권한 체크하는 코드 func checkiCloudAccountStatus(completion: @escaping (CKAccountStatus) -> Void) { CKContainer.default().ac..

iOS TipKit 사용 예제 정리

iOS TipKit 사용 예제 정리목차OverviewTipKit 이론Tipkit 예제OverviewTipKit을 사용하면 앱의 새로운 기능에 대해 사용자에게 알리거나 작업을 더 빠르게 수행하는 방법을 보여줄 수 있음.각 예제는 TipKit 프레임워크의 다양한 기능을 강조.  추천하는 팁 예시actionable > 버튼 통해 추가 정보 혹은 기능 실행instructinal > 기능에 대한 설명easy to remember > 손쉽게 기억 되어야 함.  비추천하는 팁 예시promotinal > 광고error message > 에러 메시지not actionable > 새로운 기능 알리는 것 외에 할 수 있는게 없음.too complicated > 너무 복잡함. TipKit 코드 사용 기본기본적으로 Tip과 관..

Swift withTaskCancellationHandler

Swift withTaskCancellationHandler withTaskCancellationHandler란?Task가 cancel 되었을 때 동작을 정의할 수 있음.throw 던지면 catch에서 잡는다고 생각하면 편함.(중요) Task가 cancel 된다고 작업이 즉시 중단되는건 아님. 작업 내에서 취소 상태를 확인하고 이에 따른 핸들링이 필요. 예제 코드 및 영상샘플 예제 설명performTask(): 1부터 10까지 1초마다 반복Task가 cancel 되는 조건버튼을 클릭해 다음 뷰로 이동했을 때3초가 지났을 때(참고) task modifier는 (onAppear + Task)와 동일(주의) task에서 해당 코드 형태로 작성할 시 뷰가 사라지더라도 @State로 선언되 Task는 사라지지 않..

Swift AsyncStream, AsyncThrowingStream 정리

Swift AsyncStream, AsyncThrowingStream 정리  AsyncStream클로저에서 생성된 비동기 시퀀스로, 새로운 요소를 생성하기 위해 계속 호출AsyncSequence를 준수해 asynchronous iterator(비동기 이터레이터) 수동으로 구현하지 않고도 비동기 시퀀스를 간편하게 생성할 수 있음.특히,  콜백 또는 딜리게이트 기반 API를 async-await와 함께 사용할 수 있도록 적합하게 설계되었음.AsyncStream을 초기화할 때, AsyncStream.Continuation을 받는 클로저를 전달. 이 클로저 내에서 요소를 생성하고, 해당 요소를 계속해서 `yield(_:)` 메서드를 호출하여 스트림에 제공RxSwift의 Observable에서 emit하는 것과 ..

UITableView isSelected, isHighlighted 정리

UITableView isSelected, isHighlighted 정리 UITableView에서도 UICollectionView와 동일하게 isSelected가 존재하지만 UICollectionView와 다르게 초기에 셀이 그려질 때 처음에 세팅되고 이후에는 호출되지 않음.UICollectionView와 동작성이 다름.UICollectionView 정리 내용: https://rldd.tistory.com/627 영상을 보면 보이듯이 처음에 isSelected가 호출된 후 그 이후로는 선택해도 해당 변수의 get-set 부분이 호출되지 않음. 예제코드import UIKitimport SnapKitfinal class SmapleTableViewController: UIViewController { ..

UICollectionView isSelected 정리

UICollectionView isSelected 정리 UICollectionView에서 overrdie isSelected를 통해 상태를 변경할 수 있음사용자가 선택할 때마다 isSelected가 변경됨.주의할 점: isSelected를 override해서 사용하는 경우 버전에 따라 선택 상태가 제대로 UI에 반영되지 않을 수 있음.TableView에서는 동작성이 다름.UITableView 사용성 링크: https://rldd.tistory.com/628호출순서override isSelected (이전에 선택된 아이템)DeSelect (이전에 선택된 아이템)override isSelected (현재 선택된 아이템)didSelect (현재 선택된 아이템)예제코드import UIKitimport Swift..

SwiftUI DynamicProperty

SwiftUI DynamicProperty 뷰의 외부 속성을 업데이트하는 저장 프로퍼티에대한 인터페이스   view의 body를 다시 계산(recomputing)하기 전에 해당 속성값을 제공  내부적으로 update() 메소드에 의해 기본 값을 업데이트.이 메소드는 필수이며 기본 구현이 제공됨. 이를 통해 저장 프로퍼티를 새로운 값으로 갱신.일반적으로 SwiftUI에서 @State와 같은 프로퍼티 래퍼가 사용될 때 뷰의 상태가 변하면 자동으로 호출되어 뷰의 상태를 최신으로 유지하는데 사용. 예제내용을 FileManager에 실시간으로 저장하는 예제.@AppStroage와 동일한 기능.@propertyWrapperstruct Document: DynamicProperty { @State private..