[1] ISA Swizzling Method Swizzling이 런타임에 특정 메서드를 다른 메서드로 바꿔서 실행될 수 있게 하는 것이라면, ISA Swizzling은 런타임에 특정 객체를 다른 객체로 바꿔서 실행될 수 있게 하는 것을 말합니다. (isa 는 포인터를 의미합니다) object_setClass 를 이용해서 isa swizzling을 할 수 있습니다. 예를들어 나의 커스텀 탭바를 사용하고 싶은 상황을 봅시다. TabBarController의 tabBar 프로퍼티는 get only 이고 이를 세팅할 수 없는 이니셜라이저나 메소드가 없습니다. 이 때 isa swizzling을 통해 기본 탭바를 서브클래싱한 커스텀 탭바를 사용할 수 있습니다. private class CustomTabBar: UI..
☑️ 이 글의 제목 - status bar를 hidden한 뷰컨트롤러를 푸쉬했다가 back 했을때 navigation bar가 shrink 되는 현상 - status bar를 hidden한 뷰컨트롤러를 푸쉬했다가 back 했을때 navigation bar 가 status bar 와 overlap 되는 현상 (두가지를 계속 고민하다가 결국 둘다 너무 길어서 찐제목에는 키워드만 적음,,,) ☑️ 주된 테스트 환경 Xcode 13.4.1 / iOS 15 [1] 준비 아래와 같은 상황으로 준비해줍니다 (feat. 노치없는 시뮬레이터!) - A 는 네비게이션의 root 이다. - A 에서 B 를 푸쉬한다 import UIKit class MyNavigationController: UINavigationContro..
Swift-Collections 패키지(Commonly used data structures for Swift) 에 있는 deque 라는 자료구조를 살펴보겠습니다. deque는 파이썬에서 오래전부터 많이 봐왔던 친구라.. 파이썬 문서랑 Swift 문서를 함께 살펴볼게요! [1] Deque 란 ? - deque는 "double-ended-queue" 의 줄임말입니다. 발음은 "deck" 이라고 합니다. - 양쪽 끝에서 삽입, 삭제가 가능한 큐입니다. (파이썬 문서에서는 'Deques are a generalization of stacks and queues' 라고 말합니다) - array 와 굉장히 비슷합니다. deque와 array 는 모두 ordered, random-access, mutable, ra..
WWDC 2022 > Embrace Swift Generics 에 나오는 내용입니다. Feed (사료, 먹이) 를 associatedtype으로 가지는 Animal 프로토콜을 예제로 사용합니다. [1] AS IS Farm에 feed라는 메소드를 만들고 싶을 때, 아래 두가지 중 하나의 방법으로 코드를 작성해줬어야했습니다. 메소드가 좀 복잡해보입니다. [2] TO BE 하지만!! 이제 opaque type인 some을 사용하여, 아래와 같이 간단한 메소드를 만들 수 있습니다. Swift 5.7부터는 some을 parameter type에도 쓸 수 있기 때문입니다 👏 (이전에는 프로퍼티 타입, 리턴 타입에만 쓸 수 있었음) [3] some 과 any (1) 하지만,, some은 제약이 있는데,, 아래와 같이..
[1] RELEASE 플래그 보통 앱을 만들면 DEBUG 컴파일러 플래그는 기본으로 추가되어있고 RELEASE 플래그를 직접 추가합니다. 그리고 앱에서 종종 플래그를 사용해서 분기처리를 합니다. class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() #if RELEASE print("릴리즈") #else print("릴리즈 아님") #endif #if DEBUG ... } } 그럼 Local Swift Package 를 앱에 embed 해서 쓰는 경우, Swift Package 안에서도 앱 빌드세팅의 컴파일러 플래그를 그대로 사용할 수 있을까요? 테스트해보면 #if DEBUG 는 타고 #if REL..
- Total
- Today
- Yesterday
- 플러터 싱글톤
- Sketch 누끼
- github actions
- 장고 URL querystring
- flutter dynamic link
- 플러터 얼럿
- Flutter Text Gradient
- Django FCM
- Flutter getter setter
- flutter deep link
- Python Type Hint
- flutter 앱 출시
- cocoapod
- PencilKit
- METAL
- SerializerMethodField
- Flutter Spacer
- Flutter 로딩
- 장고 Custom Management Command
- ribs
- Watch App for iOS App vs Watch App
- drf custom error
- Django Heroku Scheduler
- Dart Factory
- 구글 Geocoding API
- DRF APIException
- Django Firebase Cloud Messaging
- ipad multitasking
- Flutter Clipboard
- 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 |