본문 바로가기

전체 글92

[Swift] Call to main actor-isolated instance method in a synchronous nonisolated context Swift 6에서는 Swift Concurrency 모델을 강화하여, MainActor에 의해 격리된 인스턴스 메서드를 비격리 Context에서 호출할 수 없음.Swift의 Concurrency 모델에서 "격리"는 영어로 "isolation"이라고 합니다. Swift에서는 데이터 race를 방지하고 안전한 동시성 프로그래밍을 가능하게 하기 위해 "actor-isolated"라는 개념을 도입했습니다. "actor-isolated"는 특정 액터(Actor) 또는 메인 액터(MainActor)에 의해 격리된다는 의미입니다. 이 격리는 액터가 자신이 소유한 상태(state)에 대한 접근을 제어하도록 합니다. 이 문제를 해결하려면 아래와 같이 @MainActor 속성을 사용하여 함수나 메서드를 MainActor에.. 2024. 8. 4.
[Swift] 데이터모델링 Struct와 Class중 어떤 걸 써야할까요 +_+ ? 안녕하세요 로디입니다 🙂 오늘 커뮤니티에서 어떤 분이 Struct와 Class중에 데이터 모델을 어떤 타입으로 정의해야하는지,어떤 케이스에 따라 타입을 구분해서 사용하는지 물으시더라구요.Struct는 값 타입이구, Class는 참조 타입이기 때문에 참조 값을 공유할 필요가 없으면 Struct를 쓰는걸 권장함.! 이라고 말씀드리니그러면 Class로 모델을 정의하는 경우가 보통 언제 있는지 설명해달라고 하시는데,,, 어라라 +_+ 설명하려니깐 명확하게 구분지어 말씀을 못드리겠더라구요. 저도 헤매던 찰나에 다른 분이 공식문서 링크를 따악 공유해주셔서 저도 오늘 문서에서 적힌 내용을 정리해보려고 합니다.그러면 비교 하러가볼까요 ~~? (공식문서는 여기에서 확인할 수 있습니다!) 🤔  Struct와 Class.. 2024. 8. 4.
[PhotoKit] PHPhotoLibrary 보호되어 있는 글 입니다. 2024. 8. 3.
[PhotoKit] PhotoKit 에 대하여 iCloud Photos 및 Live Photos 를 포함하여 Photos 앱이 관리하는 이미지와 비디오 Asset들을 작업해야할때 사용하는 프레임워크.! - Photokit을 사용하여 Photos 앱이 iOS, MacOS, TVOS 및 VisionOS에서 관리하는 이미지 및 비디오 Asset에 접근할 수 있음.- 사용자의 사진을 편집하거나 표시하거나 앨범, 순간 및 공유 앨범과 같은 Asset의 collection을 관리 할 수 ​​있음.- 이 프레임워크는 사용자의 기기와 iCloud에 있는 사진에 액세스 할 수 있도록 해줌.  이렇게 앱 확장 기능을 활용하면, 사진 앱과의 통합을 통해 사용자에게 더욱 풍부하고 편리한 기능을 제공할 수 있음. 이를 통해 사용자 경험을 향상시키고, 앱의 활용도를 높일 수.. 2024. 8. 3.
[Swift] class func vs static func 보호되어 있는 글 입니다. 2024. 7. 31.
스마트폰과 스마트워치간에는 어떻게 통신할까? (블루투스) 1. BLE Scanning / Advertising BLE Scanning 과 Advertising 이 이뤄지는 원리와 방식 GAP* 를 통해 관리됨. Advertising- GAP peripheral 로 동작하는 디바이스에서 GAP central로 동작하는 디바이스에 자신을 알리는 것.- Bluetooth Classic은 총 79개의 채널을 사용함.- BLE의 경우에는 전체 40개의 채널중에 ch37, 38, 39 단 3개의 채널만 advertising 을 위해 사용함. central이 pheripheral 보다는 조금 더 많은 양의 전류를 소모함. * BLE 프로토콜 스택 중에 하나인 GAP(Gerneric Access Profile) 2. BLE ConnectionMaster 와 Slave는 Co.. 2024. 7. 25.
[Foundation] Bundle 클래스 보호되어 있는 글 입니다. 2024. 7. 21.
[Swift] inout 매개변수 안녕하세요 로디입니다. 오늘은 Swift의 inout 키워드에 대해서 간단하게 정리하겠습니다. Swift에서, 함수의 매개변수(parameter)로 전달되는 "값 타입"은 기본적으로 상수(let)입니다.* 값 타입Swift의 값 타입은 구조체(struct)를 사용하여 표시합니다. 예를 들어 String, Int, Array, Dictionary 등. 그렇기에, 함수의 body 내부에서 매개변수로 전달받은 값을 바꾸는 것은 불가능합니다.아래와 같이 매개변수 값을 바꾸려고하면 컴파일러가 에러를 표시하죠. 그렇다면 함수 내부에서 매개변수의 값을 바꾸는 게 영영 불가능할까요?아뇨, 매개변수를 inout 키워드를 이용해 inout 매개변수로 정의하면 가능합니다. Swift의 인아웃 매개변수(In-Out Param.. 2024. 7. 19.
[Swift] Method Dispatch 란 보호되어 있는 글 입니다. 2024. 7. 15.
[Swift] LazySequence 보호되어 있는 글 입니다. 2024. 7. 8.
[Swift] 문자열 String 보호되어 있는 글 입니다. 2024. 7. 7.
[알고리즘] 해시 해시- 키를 통해 값을 찾을 수 있음- 그러나 값을 통해 키를 찾을 수는 없음.- 키 자체가 해시 함수에 의해 값이 있는 인덱스가 되므로 값을 찾기 위한 탐색 과정이 필요 없음.- 값을 익덱스로 활용하려면 적절한 변환 과정을 거쳐야함. 해시 테이블- 키와 대응한 값이 저장되어 있는 공간- 해시 테이블의 각 데이터를 버킷이라고 부름. 해시 함수코딩테스트에서 해시 함수를 직접 구현하라는 문제가 나오는 경우는 거의 없음.Swift의 STL은 이미 Dictionary 를 제공하는데, 해시와 거의 동일하게 동작하므로 해시를 쉽게 사용할 수 있음.해시 함수에 의해 얻어지는 값을 해시값, 해시코드, 해시 체크섬으로도 부름. 해시 함수를 구현할 때 고려해야할 부분- 첫째, 해시 함수가 변환한 값은 인덱스로 활용해야 함.. 2024. 7. 4.