첫 번째 포스팅은 애니메이션에 관한 것입니다. 기초에 충실하게 정리해봤습니다.
두 번째 주제는 아핀 변환입니다. 처음 들어보셨다고요? 저도요ㅎㅎ
소리가 들리는 앱을 만들어 봅시다!
네트워크와 통신하는 방법의 가장 기초가 되는 URLSession에 대해 알아봅니다!
앱을 끄면 데이터가 다 날아가 버리면 안되겠지요? Core Data를 활용해서 데이터를 보존해봅시다.
Core Data를 사용하기 위해 필요한 사전 준비를 해봅니다.
컴퓨터는 두 가지 일을 동시에 할 수 있습니다. 개발자가 적절히 주문한다면요!
iOS는 메모리를 어떻게 관리할까요? ARC의 원리를 알아봅니다!
Switch문 좀 더 다양하게 활용하는 법을 알아봅니다.
forEach문과 일반 반복문 안에서 return을 사용할 때 어떤 차이가 있을까요?
associatedtype은 protocol 안에서 사용되는 기능입니다. 해당 기능을 사용하면 protocol 내에서 사용되는 타입을 하나로 제한하지 않고 하나의 프로토콜로 다양한 타입을 가지고 protocol을 구현하는 클래스를 만들 수 있습니다.
Unit Test를 준비하기 위해서 Model을 Protocol로 구현하다가 만나게 된 에러입니다. 한번 보도록 할까요?
Error를 던지는 initializer가 필요한 이유 아래는 제가 선언한 구조체입니다. dictionary를 받아서 각각의 stored property를 초기화하고 있습니다. 하지만 이 initializer는 코드로는 무조건 성공할 수 있게 되어 있지만 결과적으로는 실패할 수 있는 여지를 가지고 있습니다. studyState라는 property를 예로...
dataTaskPublisher Combine을 사용하지 않고 URLSession을 사용하는 경우 보통 위 코드와 같은 메소드를 사용하는데요. 이는 비동기적으로 Request를 하고 받은 Response를 completionHandler에 전달합니다. Combine
이번 포스팅에서는 Combine과 TextField를 조합해서 사용해보도록 하겠습니다. TextField에 URL 주소를 입력하면 해당 URL로 네트워크 통신을 하는 코드를 만들어보겠습니다. UIKit UIKit에서 UITextField를 사용하는 방법부터 알아보겠
이 포스팅은 사내에서 진행한 Tech Talk을 정리한 포스팅입니다. Tech Talk의 계기 이번에 회사에서 UITest에 대한 발표를 맡게 되었습니다. 회사에 Unit Test를 도입한 것은 대략 1년 전인데요. 모든 제품에 Unit Test를 도입한 것은 아니
이 포스팅은 사내에서 진행한 Tech Talk을 정리한 포스팅입니다. 본격적으로 UITest를 작성하는 법을 소개해보도록 하겠습니다. 테스트할 앱 소개 Tech Talk에 예시로 사용한 앱을 소개하겠습니다. 앞으로 이 앱으로 UITest를 작성하는 법을 소개하겠습
이 포스팅은 사내에서 진행한 Tech Talk을 정리한 포스팅입니다. 이번에는 Alert를 UITest하는 방법을 알아보도록 하겠습니다. 이름 입력 테스트 저번 시간에 이름 입력을 성공하는 테스트를 해보았는데요. 이번에는 실패하는 케이스를 테스트 해보도록 하겠습니
이 포스팅은 사내에서 진행한 Tech Talk을 정리한 포스팅입니다. 이번에는 Navigation을 UITest하는 방법을 알아보도록 하겠습니다. 기능 소개 오늘 테스트할 기능을 소개합니다. 퀴즈를 풀러 들어가면 그림 힌트라는 NavigationLink가 있습니다
이 포스팅은 사내에서 진행한 Tech Talk을 정리한 포스팅입니다. 이번에는 UITest와 밀접한 관련이 있는 Accessibility라는 개념을 알아보도록 하겠습니다. Accessibility (접근성) Accessibility란 고령자나 장애인처럼 기존의 방
이 포스팅은 사내에서 진행한 Tech Talk을 정리한 포스팅입니다. 이번에는 UITest를 할 때 도움이 되는 Launch Argument와 Launch Environment에 대해 알아보도록 하겠습니다. Launch Argument와 Launch Environm
전화 걸기 버튼 어떤 앱을 사용하다가 보면 개발자가 원하는 전화번호로 바로 전화를 걸어주는 기능을 가진 버튼이 있습니다. (예를 들면 고객센터 전화) 뭔가 복잡한 방법을 사용해야할 것 같지만 생각보다 간단합니다. 아래 코드를 보겠습니다. 참고로 아래 코드를 테스트해
기존의 프로젝트를 TCA로 리팩토링 하면서 알게된 개념들이 몇가지 있습니다. 오늘부터는 해당 개념들에 대한 포스팅을 통해 공부해보도록 하겠습니다. @Sendable? TCA의 예제코드를 살펴보면 데이터 통신을 위한 Client 객체를 만드는 아래와 같은 코드가 있습
지난 번 포스팅에서 @Sendable에 대해 알아보기 위해서 @Sendable이 존재하는 이유인 Race Condition에 대해서 알아봤습니다. 이번 포스팅에서는 Sendable protocol에 대해서 알아봅니다. Sendable 프로토콜 Sendable | A
저번 포스팅까지 Sendable에 대해서 배웠는데요. 이번 포스팅에서는 actor에 대해서 알아보도록 하겠습니다. Actor의 정의 저번 포스팅에서 actor를 통해서 쉽게 Sendable Protocol을 준수할 수 있다는 이야기를 했었는데요. 잠시 배경 설명을
저번 포스팅에서 Actor의 정의와 언제 사용하는 것인지에 대해서 알아보았습니다. 이번 포스팅에서는 Actor를 사용하기 위한 필수 개념인 actor isolation과 cross-actor reference에 대해서 알아보도록 하겠습니다. Actor isolatio
이번 포스팅에서도 Actor에 대해 배워봅니다. 이번 포스팅에서는 비동기적으로 접근하는 property를 동기적으로 접근할 수 있도록 해주는 nonisolated keyword에 대해서 알아봅니다. immutable은 동기적으로, mutable은 비동기적으로 위 a
@Sendable에서 시작해서 actor까지 이번 포스팅까지 5개의 포스팅을 썼는데요. 일단 이 주제에 대해서는 잠정적으로 마지막 포스팅이 될 것 같습니다. 이번 포스팅에서는 전역함수에서 actor를 parameter로 받을 수 있는 isolated parameter
글자가 border에 딱 붙는 현상 UITextField에 border를 적용해서 사용하려고 하는 경우 아래와 같이 border에 입력한 글자 혹은 placeholder가 너무 딱 붙는 경우가 있습니다. 이런 경우 UIEdgeInsets과 textRect, editi
이번 포스팅에서는 UITextField 안에 버튼을 넣어서 isSecureTextEntry를 토글할 수 있는 Text Field를 만들어보겠습니다. SubView로 넣기? 처음에 딱 떠오르는 생각은 아래처럼 secureButton 객체와 실행하려는 동작은 rx로 구
안녕하세요. 이번에 실무에서 Combine으로 되어 있는 코드를 async/await로 수정하는 업무를 맡았습니다. 그 업무를 하면서 공부를 한 내용을 몇 개의 포스팅에 나누어서 소개하고자 합니다. 이번 포스팅에서는 Swift의 Task에 대해서 알아봅니다. Ta
안녕하세요. 지난번 포스팅에서는 Task의 정의와 구현 방법에 대해서 알아봤는데요. 이번 포스팅에서는 Task를 다양하게 실행해보면서 좀 더 공부해보도록 하겠습니다. 예제 코드 소개 먼저 다운로드 비동기 함수를 하나 mocking 해보았습니다. 2초 후에 Strin
안녕하세요. 이번에 회사에서 제가 주도적으로 모듈화를 담당하게 되었습니다. 기존의 코드의 어떤 부분을 어떻게 모듈화를 했는지 포스팅으로 정리해보도록 하겠습니다 모듈화 이전 상황 저희 회사는 새로 시작하는 모든 프로젝트에 SwiftUI와 Combine (혹은 asyn
안녕하세요. 지난 번 포스팅에서 3개의 회사 제품에서 공통으로 쓰이는 코드를 하나로 묶어서 관리하는 패키지를 만들기로 한 배경을 설명 드렸습니다. 이번 포스팅에서는 본격적으로 Swift로 패키지 만들기는 방법을 소개 해보록 하겠습니다. 패키지 파일 만들기 일단 Xc
안녕하세요. 이번 포스팅에서는 접근 제한자 (Access Modifier)에 대해서 알아봅니다. 접근 제한 (Access Control) 접근 제한의 정의는 “다른 소스파일 혹은 모듈에서 현재 코드에 대한 엑세스를 제한”하는 것입니다. 즉 현재의 모듈 안에서의 코드
이번 포스팅에서는 외부에서 우리가 만든 패키지를 어떻게 사용하는 것인지 알려주기 위한 주석인 문서화 주석에 대해서 알아보도록 하겠습니다. 문서화 주석이란? 현재 그 코드를 보고 있는 개발자만 볼 수 있는 일반적인 주석과는 다르게 문서화 주석은 퀵헬프 기능을 통해서
오늘은 swift에서 reflection을 할 수 있도록 해주는 Mirror라는 객체에 대해서 소개해보도록 한다. reflection이란? reflection을 위한 객체가 mirror라고 했다. 그렇다면 reflection의 정의를 알고 가야 Mirror에 대한
오늘은 기존의 프로토콜을 가지고 새로운 프로토콜을 만드는 2가지 방법을 소개한다. 하나는 상속 (inheritance)으로 수직적 확장의 개념이고 다른 하나는 조합 (composition)으로 수평적 확장의 개념이다. 상속 (inheritance) 상속은 프로토콜의