[1] NSCollectionLayoutBoundarySupplementaryItem > absoluteOffset 대놓고 이름이 offset 인데, inset 처럼 동작안해서 이상하다고 생각하고 있었다 ;;;;; 위 그림에서 item (파란색) bottom 으로 부터 안쪽 100에 footer (초록색) 이 위치해야하는데, 이상하다 ? 고 생각함 ;;;;; 왜그랬을까 생각해보면... 스유에서 alignment 에 값 주던 형태랑 비슷하니까 안쪽으로 들어간다고 생각했지 않을까 ? 갑자기 떠오르는 SwiftUI 초창기 시절에 들었던 발표,,, 아무리 사고방식이 바뀌었다고 해도 이름이 offset 이다.. 정신차려라. 그리고 주석에도 그림이 적혀있음! 내가 헷갈렸던 footer 2개 들..
- 문서 - 문서 ⭐️- WWDC 23 > Write Swift macros 📝 Assisted by GPT [1] 매크로 템플릿 만들기 Xcode > New > Pacakge > Swift Macro 선택해서 매크로 템플릿을 만들 수 있음. 커맨드라인으로도 가능한데, 아래 명령어를 실행시키면 됨. swift package init --type macro 만들어보면 기본적으로 ㄴ dependency 로 swift-syntax 가 걸려있음.ㄴ WWDC 에서 소개하는 stringify 매크로의 선언, 구현, 예제, 테스트 코드 들어가 있음. [2] 매크로 유형 일단 크게 두가지 1️⃣ Freestanding Macros• 코드 블록 외부에서 동작.• 예: 디버깅 정보를 자동으로 추가..
✓ SE-0431 @isolated(any) Function Types 📝 Assisted by GPT [1] @isolated(any) @isolated(any) 은 swift 6 에 추가된 attribute 입니다. (function only)임의의 (하지만 정적으로 알 수 없는) 격리를 가진 함수를 표현할 수 있습니다. Task 에도 반영됨! [2] @isolated(any) 도입 배경 Task 이니셜라이저는 () async throws -> () 타입의 불투명 값 (opaque value) 을 받습니다. 그러나 이 값에서 격리를 동적으로 복구할 수 없기 때문에, 이니셜라이저는 해당 작업을 global concurrent executor 에서 시작할 수밖에 없습니다. 만약 이니셜라이..
- [Swift] Sendable 을 먼저 읽고 오시길 추천드립니다. - Swift 6 기반의 글입니다.[1] @unchecked GPT 의 설명Swift에서는 Sendable이라는 프로토콜을 통해 값이 스레드 간 안전하게 공유될 수 있는지를 나타내는데, 기본적으로 Sendable 프로토콜을 구현한 타입은 스레드 안전해야 합니다. 하지만, @unchecked를 사용하면 이 안전성 검사를 생략하고 강제로 Sendable을 준수하는 것으로 표시할 수 있습니다.예를 들어, @unchecked Sendable을 사용하면 Swift 컴파일러는 이 타입을 Sendable로 인식하지만, 실제로는 스레드 안전하지 않을 수 있음을 경고 없이 허용합니다. struct SomeType: @unchecked Sendable ..
- WWDC 23 > What’s new in Swift : 작년에 소개됨 (Swift 5.9, 제네릭 지원 X) - WWDC 24 > Consume noncopyable types in Swift : 올해 별도의 세션이 생김 (Swift 6, 제네릭 지원) - SE-0390 Noncopyable structs and enums [1] Noncopyable - Noncopyable 은 copy 가 불가능한 타입임을 나타냄 (struct, enum 에서 사용가능) - 말할 때는 Noncopyable, code syntax 로는 ~Copyable - copy 가 불가능하다는 것이 7번 라인이 불가능하다는 뜻이 아니라, copy 를 한번 하고 나면 ownership이 이전되어서 원본은 못쓰고 복사본만..
WWCD 24 > What’s new in Xcode 16 에서 소개된 preview 관련 API 두개..! [1] @Previewable - @Previewable 은 #Preview body 내에서 사용하는 매크로 (iOS 17+)- 이 매크로는 #Preview body 내에서 @State property 를 선언할 수 있게 해줌 (예전에는 dynamic property 를 들고 있는 뷰의 동작을 테스트하기 위해 별도의 wrapper view 를 만들고 @State property 를 선언했음) AS ISimport SwiftUIstruct SomeView: View { @Binding var text: String var body: some View { Te..
Swift 6 에서 'Typed throws' 를 사용할 수 있다. - Swift Proposal: SE-0413- WWDC 24 > What’s new in Swift [1] 개념 AS IS기존의 에러 처리 방식이다. catch 블럭에 전달되는 에러는 type erased 되기 때문에 이런 식으로 구체 타입 체크를 했다. 이런 방식을 'UnTyped throws' 라고 한다. TO BE 이제 'Typed throws' 방식도 지원된다! 이렇게 function 이 throw 할 에러의 구체타입을 지정할 수 있다. (하나의 구체 타입만 사용한다면) 그럼 type erasure 가 안되고catch 블럭으로 들어오는 에러는 구체타입이다. [2] 실습 [3] 참고 1) API 에서 t..
[ 문서 ]- 공식 문서 > templates. - workshop > Bonus 2. Templates [ tuist scaffold ]tuist 는 tuist scaffold 라는 명령어를 제공하는데, 프로젝트 자동생성을 도와주는 명령어입니다.tuist scaffold name_of_template --name Name 이 명령어는 Tuist/Templates 경로에 저장되어있는 템플릿을 사용하고,템플릿은 manifest 파일과 Stencil file 을 결합하여 만듭니다. 자세히 말하자면, 1) Tuist/Templates 하위에 name_of_template 디렉토리 만들기. 2) 해당 디렉토리에 name_of_template.swift 파일 두기.3) name_of_template.swif..
[1] AsyncSequence - iterator 를 통해 elements 에 접근하는 Sequence 와 동일한 개념. 대신 asynchronous 하게 element 를 접근한다는 점이 Sequence 와 다름. 영어가 더 깔끔한 듯.. ? ‘AsyncSequence is a protocol which resembles Sequence and allows you to iterate over a sequence of values asynchronously.’ - iterator 의 next() 를 호출하거나 for await loops 를 사용해서 elements 에 접근할 수 있음 - AsyncSequence 프로토콜의 requirement 를 간략히 적어보자면 다음과 같음 protocol As..
[1] @TaskLocal 이란 ? @TaskLocal 은 특정 Task 와 Child Tasks 들끼리 값을 공유할 수 있게 해주는 프로퍼티 래퍼입니다. 이 값은 특정 Task 랑 Child Tasks 에만 국한되어서 전파됩니다. 즉 상위 Task 및 다른 독립적인 Task 에는 영향을 주지 않습니다. @TaskLocal 를 통해 전역상태를 피하면서도, 관련된 작업들 간에 상태를 안전하게 공유할 수 있습니다. [2] TaskLocal 선언하기 static 이나 global 프로퍼티로 선언되어야합니다. (global 은 Swift 6 이상부터 가능하다고 하네요) [3] TaskLocal 에 값을 바인딩 하기 task-local 에 직접적으로 value 를 set 할 수 없습니다. ..
- Total
- Today
- Yesterday
- cocoapod
- github actions
- Django FCM
- ipad multitasking
- Watch App for iOS App vs Watch App
- flutter 앱 출시
- 장고 Custom Management Command
- Django Firebase Cloud Messaging
- Dart Factory
- Flutter Text Gradient
- Sketch 누끼
- METAL
- DRF APIException
- 구글 Geocoding API
- Flutter getter setter
- drf custom error
- 플러터 얼럿
- SerializerMethodField
- Flutter Spacer
- 플러터 싱글톤
- ribs
- Django Heroku Scheduler
- flutter dynamic link
- Flutter 로딩
- PencilKit
- 장고 URL querystring
- Flutter Clipboard
- Python Type Hint
- flutter deep link
- flutter build mode
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |