분류 전체보기

SWIFTUI

View Modifier

A modifier that you apply to a view or another view modifier, producing a different version of the original value. - 기존의 뷰 또는 다른 view modifier에 적용시켜 또 다른 버전을 만들 수 있는 modifier이다. 즉 기존의 뷰 또는 modifier에 추가적으로 꾸며줄수 있다. 그런데 여기서 궁금한점... 왜? 굳이 커스텀해서 뷰 모디파이러를 하는가 그자체로 바꾸지 않구? - 앱 전체적으로 쓰이는 스타일이 있다면 일일이 수정해주려면 코드를 일일이 추가해주어야하기에 struct RedBorder: ViewModifier { func body(content: Content) -> some View { co..

SWIFTUI

근본으로 돌아가자 - View는 왜 구조체로 생성할까?

UIkit에서는 주로 뷰를 class로 만들었는데 swiftUI에서 보면 뷰를 구조체로 만드는 것을 발견했을 것이다. 왜 근데 유킷과 달리 구조체로 만들까? 1. 뷰 자체가 가벼워진다. 그 전에 Struct와 Class차이를 알아야 한다. 클래스는 상속이 가능하지만 구조체는 상속이 불가능하다. 클래스는 참조타입, 구조체는 값타입 -> 구조체는 메모리영역에서 Stack, 클래스는 Heap영역에 있다. 스택은 메모리 올라갔다가 사용이 종료되면 바로 삭제되지만, 힙에 올라간 코드는 가비지컬렉터에 의해 정리 - UIKIt에서는 수많은 속성과 메서드가 있는 클래스의 서브클래스다. 간단한 뷰를 만들더라도 사용하던 안하던 이미 속성이 많이 가지고 있다. 하지만 구조체로 뷰를 생성하다보니까 상속된 크기없이 그 구조체만..

Swift

Swift 5.9 Updates

What's new in swift 5.9? https://www.swift.org/blog/swift-5.9-released/ Swift 5.9 Released Swift 5.9 is now available! 🎉 www.swift.org 1. if & switch 위와 같은 식으로 부등호가 들어간 if문들을 elseif가 여러개 있는게 아닌 case로 가독성이 좋게 쓸수 있도록 업데이트가 되었다. python에서는 가능하던 것인데 오! swift도 된다!~~!!!!!! 2. Macro :코 드 조각을 정의하여 여러 곳에서 재사용할 수 있게 해주고 보통 전처리기에서 생성/compile time에 코드를 변화해서 반복되는 코드를 쓰는 것을 피하게 해준다 이번꺼에서 가장 중요한 업데이트~ 매크로는 함수와 ..

iOS

KeyChain

그동안 나는 UserDefault one tool이였다. 그런데 userdefault에는 간단한 설정들만 하지 중요한 자료들을 저장하면 안된다. apple이 제공하는 보안프레임워크. 디바이스 안에 암호화된 데이터 저장공간. 로그인 및 암호(해시), 결제데이터, 등 비밀 유지하고 싶은것을 저장. 사용자가 직접 제거하지 않는 이상, 앱을 제거하고 설치해도 데이터는 남아있어~ device lock하면 keychain도 잠기고, 디바이스 unlock하면 풀림. 잠긴상태에서는 item에 접근, 복호화 할수 없다. 풀린상태에서도 해당 아이템을 생성하고 저장한 어플리케이션에서만 접근이 가능. keychain은 하나의 암호화된 컨테이너 How To Save? - 저장할 데이터는 암호화여 keychain item으로 패..

Swift

Combine(2)- Operator

OperatorMap: publisher의 모든 요소를 변환함.Map과 ForEach차이- 반복을 하는 것은 똑같지만 ForEach는 여기서 부터 여기까지 반복을하겟다 명시라면 map은 바꾸겟다라는 명시. 물론 ForEach에서 변환할수 있다= 이것자체가 Map . 다른사람이 봤을때 Map이 있으면 아~ 바꾸려나 보다~~ 이해할수 있다. tryMap : Map과 같지만 클로저 오류발생시키면 Publish 종료compactMap:  nil을 제외하고 nil이 아닌것만 publishx``replaceNil : nil들을 내가 원하는 element로 변환scan: 아래와 같이 더한다. 값들을 누적let publisher = (0...5).publisher .scan(0, { return $0 + $1 })..

SWIFTUI

협업의 기초 - View분리 방법

원래의 뷰 struct CouplingView: View { private let mycode = UserManager.shared.currentUserUID @State private var clickPasteBtn = false @Binding var isOpen : Bool var body: some View { NavigationView { VStack{ ZStack { HStack{ Button(action: { isOpen = false }){ Image(systemName: "xmark") .resizable() .foregroundColor(.tertiaryLabel) .frame(width: UIScreen.getWidth(20),height: UIScreen.getHeight(20)) ..

SWIFTUI

ConfirmationDialog

기존의 actionSheet는 deprecated되었고 confirmationDialog를 사용하라고 나와있다. 이게 몬데? func confirmationDialog( _ titleKey: LocalizedStringKey, isPresented: Binding, titleVisibility: Visibility = .automatic, presenting data: T?, @ViewBuilder actions: (T) -> A ) -> some View where A : View 첫번째에 타이틀을 달아줄수 있고 titleVisibility를 통해 title이 보여질지 정해줄 수 있고 그 뒤의 파라미터들을 통해 Button들을 추가해줄 수 있다. Button { isShowingConfirmationD..

알고리즘

Queue 10845 - swift

큐 구현이다. swift로는 큐를 어떻게 구현하는지를 물어보는 거였다. // // main.swift // Queue // // Created by 235 on 2023/09/05. // import Foundation struct Queue{ var queue: [Int] = [] public var size: Int { return queue.count } public var isEmpty: Bool { return queue.isEmpty } public var front: Int { return isEmpty ? -1 : queue[0] } public var back: Int { guard let last = queue.last else {return -1} return last } mutati..

알고리즘

1259 - swift로풀기

오랜만에 돌아왔습니다 ㅠㅠㅠ 한동안 알고리즘을 놓다가 다시 잡게 되었네요. 이전까지는 주로 난이도 있는 것들을 파이썬으로 푸는 풀이들을 올렸었는데 리뉴얼을 했습니다!!! 올해 마치고 바로 취업에 목표를 둔것이 아니기에 swift로 차근차근 난이도를 높여가며 풀어과는 과정을 이제부터 올릴 예정입니다. 대망의 첫문제는 바로 유명한 팰린드롬수! 문제의 이해는 브론즈1로 낮기에 바로 풀이로 들어가겠습니다. // // main.swift // Algoritm // // Created by 235 on 2023/09/04. // import Foundation var arr: [String] = [] while true { var input = readLine()! if input == "0"{ break }els..

Swift

TaskGroup

TaskGroup뭐 간단한 병렬실행이면 async let을 써주면 된다. 하지만 이게 수없이 많다면? async let 계속쓸래??또한 static하게 결정된 task에서만 쓸수 있다. 왜? 우리가 async let 으로 다 일일이 해줘야하기에!!만약 모든 이미지를 가져와야하는경우 필요한 개수를 미리 알수 있을까?⇒ nono 그건 컴파일시점에 알수 있는것이 아닌 런타임 시점에 알수 있다.TaskGroup런타임때마다 달라질수 있는 child Task들을 동적으로 만들어줄수 있다!! 😆 😆 😆Taskgroup을 만들기 위해서는 withTaskGroup(of:returning:body:)를 호출!throwing taskgroup → withThrowingTaskGroup(of:returning:body:..

2료일
'분류 전체보기' 카테고리의 글 목록 (5 Page)