일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Tistory
- 디자인패턴
- development
- 후기
- Opensource
- SwiftUI
- IOS
- Design Pattern
- notion
- Cocoa Internals
- boostcamp
- OS
- 단위 테스트
- 코코아 인터널스
- 커스텀 뷰
- 부스트캠프
- WWDC
- rxswift
- 부트캠프
- 개발
- Hello
- Swift
- World
- Algorithm
- 네이버 부캠
- 알고리즘
- Today
- Total
목록Swift (11)
꿈돌이랜드
https://github.com/apple/swift-nioiOS 앱 내에 로컬 프록시 서버를 구축하기 위해 방법을 찾아보던 도중, 서버 개발을 위한 SwiftNIO라는 애플의 프레임워크를 알 게 되었습니다.사용 방법을 위해 README를 읽고 번역해보았습니다. 오역이 있을 수 있습니다.Swift로 서버를 구축해보고자 하시는 분들께 도움이 되었으면 합니다. SwiftNIO는 유지 관리 가능한 고성능 프로토콜 서버 및 클라이언트의 신속한 개발을 위한 크로스 플랫폼 비동기, 이벤트 드리븐 네트워크 어플리케이션 프레임워크.Netty와 비슷하지만, Swift용으로 작성됨.개요SwiftNIO는 기본적으로 Swift에서 고성능 네트워킹 어플리케이션을 구축하기 위한 도구.특히 thread-per-connect 동시..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/zImXu/btsyT0dLYm2/kdE1qHgXhMAkMH6pdNBZh1/img.png)
Result연관 값을 포함한 success 또는 failure를 나타낼 수 있는 타입제네릭 enum 타입으로 선언되어있다. Failure는 반드시 Error 프로토콜을 채택한 타입이어야 합니다.@frozen enum Result where Failure : Error어떤 동작의 수행결과(대표적으로 네트워킹)를 success인지 failure인지 구분해서 나타낼 수 있습니다.case로 success와 result를 가지고, 각 case의 연관값으로 제네릭타입의 넣어준 값을 저장합니다. Result의 쓰임 예시는 아래 아티클을 참조해주세요Writing Failable Asynchronous APIs오류를 동기식으로 반환하지 못할 때, API의 일부로 Result를 반환하는 것을 제안합니다.→ API의 실행 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dhH0JD/btsvOCA7mGF/YOV6rHdIiFhjcdRmKla7Z0/img.png)
다음 애플 문서를 참고했습니다.Object archivingA collection of short articles on the core concepts, patterns, and mechanisms in Cocoa programming.https://developer.apple.com/library/archive/documentation/General/Conceptual/DevPedia-CocoaCore/Archiving.html객체 아카이빙아카이빙은 객체 그래프를 응용 프로그램 간에 1)저장하거나, 2) 전송가능한 타입으로 변환하는 과정을 말합니다.아카이빙의 최종 결과인 아카이브는 객체의 ID, 캡슐화된 값, 다른 객체와의 관계가 기록된 byte stream입니다. 아카이빙의 반대인 언아카이빙은 아카이..
WWDC22 - Embrance Swift genericsEmbrace Swift generics - WWDC22 - Videos - Apple DeveloperGenerics are a fundamental tool for writing abstract code in Swift. Learn how you can identify opportunities for abstraction as your code...https://developer.apple.com/videos/play/wwdc2022/110352/추상화아이디어를 특정 세부 사항과 분리.추상화 형태 중 하나는 코드를 함수나 지역 변수로 분해하는 것. Model with concrete types농장을 시뮬레이션하기 위한 코드를 작성해 나가는 것으..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/nPXh5/btstvPYaajJ/7hsP9663wLPObvUzSPNuMk/img.png)
위와 같은 카카오톡의 페이지뷰를 구현해려고 하는데 이런 요구사항이 있다. 어떻게 해야할까? 요구사항 각 탭 간 슬라이드 하면서검정 인디케이터 선이 각 탭의 라벨의 하단 위치에 맞게 이동한다.검정 인디케이터 선이 각 탭의 라벨 제목의 길이에 비례해 길이가 변해야 한다.현재 뷰에 나타나는 탭의 라벨 제목 색깔이 회색에서 검정색으로 변해가야 하고, 뷰에서 사라지는 탭은 검정색에서 회색으로 변해가야 한다.UIScrollViewDelegate탭 바 하단의 뷰가 좌우 폭이 매우 큰 스크롤 뷰로 이루어져 있다고 하면, UIScrollViewDelegate를 채택하고 scrollViewDidScroll(_ scrollView: UIScrollView) 메서드를 사용할 수 있다.이 메서드는 스크롤 뷰가 스크롤 되는 동안..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/qKs7n/btssHAsTh07/4TnkUArHgwazUukRpSHHtk/img.png)
Swift Array’s Shuffle()스위프트 배열에는 요소들을 뒤섞어주는 shuffle() 메서드가 존재합니다.var names = ["Alejandro", "Camila", "Diego", "Luciana", "Luis", "Sofía"] names.shuffle() // names == ["Luis", "Camila", "Luciana", "Sofía", "Alejandro", "Diego"]공식 문서에서는 RandomAccessCollection 프로토콜을 채택한 인스턴스가 사용할 수 있다고 합니다. WWDC 2018에서, 이런 셔플 알고리즘은 Fisher-Yates 알고리즘을 사용해 구현했다고 합니다.https://developer.apple.com/videos/play/wwdc2018/40..
Swift5.7 RegexSwift 5.7 이후, Swift 언어에서 정규 표현식 사용 방법이 업데이트 되었습니다. 이를 정리해보도록 하겠습니다. Swift 5.7 이전, 정규표현식을 사용하려면 다음의 것들을 사용했어야 했습니다.NSRegularExpressionNSString의 메서드 range(), replacingOccurrences() … 다음은 예시 코드 입니다.문자열 일부 일치 확인import Foundation let str = "abcd1234" let pattern = "[0-9]*" if let range = str.range(of: pattern, options: .regularExpression) { print(str[range]) // 가장 앞 부분 부터 일치하는 부분을 반환 } ..
스위프트의 구조체는 여타의 C 기반 언어의 구조체에 비해 훨씬 강력하다. 그런데 클래스는 그러면 언제 사용해야 할까?애플의 Swift Programming Language Guide에서는 다음과 같이 제시하고 있다기본적으로는 구조체를 사용하라.Swift의 구조체는 다른 언어의 클래스로 취급될 정도의 많은 기능을 포함한다.예를 들면, stored property, computed property, method 등이 있다.게다가, 프로토콜을 채택할 수 있다.구조체는 value 타입이기 때문에 앱의 상태를 고려할 필요가 없다.Objective-C 와의 상호작용이 필요할 때는 클래스를 사용하라.데이터를 처리해야 하는 Objective-C API를 사용하거나 프레임워크에 정의된 기존 클래스 계층에 맞춰야 하는 경..