- 초기화(initialization.. 편의? 지정?)2료일https://bbiguduk.gitbook.io/swift/language-guide-1/initialization 초기화 (Initialization) | Swift 타입의 저장된 프로퍼티에 초기값을 설정하고 초기 설정을 수행합니다. 초기화 (Initialization) 는 인스턴스의 클래스, 구조체, 또는 열거형을 사용하기 위해 준비하는 단계입니다. 이 단계에는 인 bbiguduk.gitbook.io 여기들어가면 어마어마하ㄷ..분량이... 그만큼 초기화가 swift에서 중요하다. Swift는 모든 저장된 프로퍼티가 초기값을 받을 수 있도록 클래스 타입에 대해 2가지의 초기화 구문을 정의한다. => 바로 지정된 초기화와 편의 초기화라는 친구들이다. 지정된 초기화(designated Initialize..
- 2024-03-05 20:18:28
- Function(1급시민 , inout & 클로저✨)2료일Swift의 함수는 1급 타입(First Class-type)이다 근데 1급타입이 몬데 ? 아래의 3가지를 만족하면된다.아래의 3개가 1급시민의 조건이고 그것을 충족하는 객체가 1급객체이다. 변수와 상수에 함수가 저장될수 있다. 아래에서 보면 increment라는 변수에 함수를 할당해주었다. 그러면 저 변수는 함수 그자체 그런데 주의 할게 동일한 이름의 함수가 오버로딩 되어있을때는 타입추론이 안되고 타입 명시를 해주어야함. 함수가 다른 함수를 값으로 반환할 수 있다. func makeIncrementer() -> ((Int) -> Int) { var answer = 1 func addOne(number: Int) -> Int { return answer + number } return addOne } v..
- 2024-03-04 15:00:00
- Assertions && Preconditions2료일Swift기본을 다지기 위해 공부하던중 역설과 전제조건....뭐야 왜이렇게 입에 안달라붙고 한국어가 어렵냐..하며 찾아봤다... - Runtime시 발생하는 조건 - 불값이 true면 코드가 진행되고 false면..? 종료시킬수 있음 - 역설은 개발과정에서의 실수를 찾는데 도움을 주고 전제조건은 프로덕션문제 감지하는데 도움을 준다. => 유효하지 않은 조건이 발생하지 않도록 코드를 디자인하기 위해 사용한다. 뭐가다른데? 역설은 오직 디버그 빌드에서만 체크(프로덕션에서는 영향을 안주기에 개발단계에서 많이 해도 상관없다) 전제조건은 디버그와 프로덕션 빌드에서 체크 출시할때 엄청 크리티컬한거 예를들면 어? 이 함수 저번 버전인데 우리 업데이트했는데? 그래서 안바꾸면 API통신 안될텐데.? 프로덕션하고 디버그 ..
- 2024-03-02 21:28:40
- LLVM? Swift가 컴파일되는 과정 Swift 기초2료일우선 Swift를 다시 공부하기 전에 나도 1년동안 했는데 머리가 좀 커졌잖아?? 그러니 하나하나 할때 Deep Dive를 해보자!! Swift는 우선 스크립트 언어가 아닌! 함수형언어이자 컴파일 언어이다. 먼저 스크립트 언어란? 컴파일러 없이 한줄 한줄 읽으며 실행한다.번역속도는 빠르지만 매번 실행시킬때마다 한줄한줄...읽어야해서 프로그램 실행속도는 컴파일언어보다 느리다. 컴파일 과정이 없어서 실행해봐야 오류가 있는지없는지 안다. 컴파일언어란?소스코드를 컴파일러가 컴파일 하여 objc파일로 만들고 링커가 실행파일로 만드는 과정이 필요한 언어. Swift Compile과정!!! 1. 먼저 컴파일전에 전처리를 한다 (#define, #include)요론놈들 2. 파싱을 함. 전처리된 소스코드를 토큰단위로 ..
- 2024-03-01 17:01:40
- Swift 5.9 Updates2료일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에 코드를 변화해서 반복되는 코드를 쓰는 것을 피하게 해준다 이번꺼에서 가장 중요한 업데이트~ 매크로는 함수와 ..
- 2023-10-10 17:35:44
- KeyChain2료일그동안 나는 UserDefault one tool이였다. 그런데 userdefault에는 간단한 설정들만 하지 중요한 자료들을 저장하면 안된다. apple이 제공하는 보안프레임워크. 디바이스 안에 암호화된 데이터 저장공간.로그인 및 암호(해시), 결제데이터, 등 비밀 유지하고 싶은것을 저장. 사용자가 직접 제거하지 않는 이상, 앱을 제거하고 설치해도 데이터는 남아있어~device lock하면 keychain도 잠기고, 디바이스 unlock하면 풀림.잠긴상태에서는 item에 접근, 복호화 할수 없다.풀린상태에서도 해당 아이템을 생성하고 저장한 어플리케이션에서만 접근이 가능.keychain은 하나의 암호화된 컨테이너How To Save?- 저장할 데이터는 암호화여 keychain item으로 패키징. 그런데..
- 2023-10-08 20:08:13
- Combine(2)- Operator2료일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 })..
- 2023-10-08 01:57:08
- TaskGroup2료일TaskGroup뭐 간단한 병렬실행이면 async let을 써주면 된다. 하지만 이게 수없이 많다면? async let 계속쓸래??또한 static하게 결정된 task에서만 쓸수 있다. 왜? 우리가 async let 으로 다 일일이 해줘야하기에!!만약 모든 이미지를 가져와야하는경우 필요한 개수를 미리 알수 있을까?⇒ nono 그건 컴파일시점에 알수 있는것이 아닌 런타임 시점에 알수 있다.TaskGroup런타임때마다 달라질수 있는 child Task들을 동적으로 만들어줄수 있다!! 😆 😆 😆Taskgroup을 만들기 위해서는 withTaskGroup(of:returning:body:)를 호출!throwing taskgroup → withThrowingTaskGroup(of:returning:body:..
- 2023-08-13 20:01:28
- Swift Concurrency - Async, Await2료일기존 GCD’s queue-based model&completion Handler의 문제점?Thread Explosion : 내가 쓰레들들 만들수 있어서 수많은 쓰레드속에서 switching이 필요하다. 우리가 왜 쓰레드를 만들었지? 프로세스 context swiching 때문에. 그런데 쓰레드가 너무많이생기면 문제CPU는 이전 쓰레드에서 새 스레드로 전환하려면 전체 쓰레드 컨텍스트 스위치 해야함.memory overhead: 블락된 쓰레드는 재실행을 기다리는 동안 메모리, 리소스를 가지고 있다,Priority inversion: Qos는 특정 queue에 높은 우선순위 일을 끝내기 위해 낮은 우선순위의 시스템리소스를 뺏었다.비동기 코드가 실행되면 코드가 control을 포기하기전까지 CPU core를 ..
- 2023-08-08 04:58:38
- Combine3-Cancellable2료일Combine을 공부하다보면 Cancellable이라는 프로토콜을 자주 만나게 된다. 먼지도 모르고 그냥 쓰는 것은 내가 제일 싫어하는 것이기에 공부 바로 시작Cancellable"A protocol indicating that an activity or action supports cancellation."취소를 지원하는 활동 혹은 액션을 나타내는 프로토콜..? 이거 보고 이해하는 사람 있나여? 일단 나는 아님Combine에선 이벤트 스트림을 action이라하는데 이 것을 취소할수 있는 프로토콜이라고 한다.AnyCanclleablefinal public class AnyCancellable : Cancellable, Hashable비슷한 놈이 Cancellable프로토콜을 채택하고 있다. 이전의 sin..
- 2023-07-09 16:41:52
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)