본문 바로가기
반응형

xcode31

Designing For WatchOS(WatchOS용 디자인) 디스플레이: 가독성, 고해상도 인체공학: 화면에서 한 발 정도 떨어져 있음 반대 손을 사용하여 장치와 상호 작용 Always On Display 입력: 디지털 크라운을 이용한 수직 탐색 데이터 검사, 시계 페이스 홈 화면 및 앱 내에서 일관된 제어 터치스크린 제스처 액션버튼 GPS, 혈중 산소, 심장 기능 감지 센서, 알티미터, 가속도계, 자이로스코프 데이터 활용 앱 상호 작용: 하루 내내 켜진 디스플레이 자주 봄 1분 미만 지속되는 간결한 앱 상호 작용 컴플리케이션, 알림, Siri 상호작용 자주 사용함 시스템 기능: 익숙하고 일관된 방식으로 상호 작용하는데 도움을 줌 WatchOS에서 자연스러운 경험을 선사하기 위한 방법 중요한 정보를 간결하게 제공, 간단한 제스처로 하나 또는 두개로 목표 지향적인 .. 2023. 10. 16.
swift5.5 스레드 동시성 문제 및 해결 방안 (async/await, Actor) 동시성 문제는 여러 스레드 또는 동시에 실행되는 코드가 공유된 데이터에 액세스할 때 발생할 수 있습니다. 동시성 문제의 대표적인 예시는 "계좌 이체" 문제입니다. 계좌 이체를 예로 들어 볼 수 있습니다. 두 개의 계좌 A와 B가 있고, A 계좌에서 B 계좌로 일정 금액을 이체하는 상황을 가정해 보겠습니다.class BankAccount { private(set) var balance: Int init(balance: Int) { self.balance = balance } func deposit(_ amount: Int) { balance += amount } func withdraw(_ amount: Int) { balance -= amount } } func transfer(from accountA:.. 2023. 3. 21.
modalPresentationStyle .fullScreen과 .overFullScreen의 차이점 modalPresentationStyle의 두 가지 옵션 중 .fullScreen은 모달 뷰 컨트롤러가 전체 화면을 차지하며, 부모 뷰 컨트롤러가 완전히 사라집니다. 다시 말해, 모달 뷰 컨트롤러가 화면 전체를 차지하여 부모 뷰 컨트롤러의 콘텐츠가 보이지 않습니다. 반면에, .overFullScreen은 모달 뷰 컨트롤러가 전체 화면을 차지하지만, 부모 뷰 컨트롤러는 여전히 보이며, 일부 콘텐츠가 여전히 볼 수 있습니다. 즉, 모달 뷰 컨트롤러는 전체 화면을 차지하지만, 부모 뷰 컨트롤러의 일부 콘텐츠가 여전히 보이며 배경은 투명하게 처리됩니다. 따라서, .fullScreen은 모달 뷰 컨트롤러가 전체 화면을 차지하며, 부모 뷰 컨트롤러가 완전히 사라지는 반면에, .overFullScreen은 모달 뷰 .. 2023. 3. 20.
Swift5.1 불투명 타입 (Opaque type) some Type SE-0244 안녕하세요~! 오늘은 Swift5.1에서 소개된 불투명 타입 Opaque type에 대해서 소개해 드리려고 합니다~! 명확한 반환 타입을 외부에 제공하는 대신, Opaque 반환(return) 타입을 가진 함수, 메서드는 자신의 반환타입 정보를 외부에 숨길 수 있습니다. Return 타입을 숨기는 것은 모듈로 호출되는 코드와 모듈 사이에서 유용하게 사용할 수 있습니다. 제네릭(구현부 추상화), 호출하는 곳에서는 구체적인 타입(예 : )을 아는 상태에서 사용했다면, Opaque type은 반대로 구현부는 구체적인 타입을 알고 있지만, 호출하는 곳에서는 특정 프로토콜만 알 수 있습니다. - Generic - 구현부 - 추상화하여 작성 호출부 - 구체적인 타입 지정 (타입을 알 수 있음) - Opaque Ty.. 2023. 1. 20.
Swift5.1 구조체 멤버별 이니셜라이저(Memberwise Initializer)의 기본값 합성 SE-0242 안녕하세요~! 오늘은 Swift5.1에서 새롭게 변경된 사항들을 정리해보려고 하는데요 첫 번째로 멤버셜 초기화(memberwise initializer)시 기본값 합성에 대해서 알아보려고 합니다. 어떻게 달라졌는데 함께 알아보시죠~! 기본적인 구조체 강아지를 만들었습니다. struct Dog { var age: Int var name: String } 컴파일러에서는 아래와 같이 초기화를 합성합니다. init(age: Int, name: String) 그런데 만약 모든 강아지의 나이에 0으로 초기값을 갖는다고 가정 하고 인스턴스를 생성 했습니다. 하지만 인스턴스 생성시 Swift 컴파일러가 초기 값이 있는 속성에 대한 기본값을 생성할 수 없기 때문에 에러가 발생합니다. struct Dog { var age.. 2023. 1. 16.
Swift5.0 SE-0225 배수 구하기 isMultiple(of:) 안녕하세요~! 오늘은 isMultiple(of:)에 대해서 소개해 드리겠습니다. isMultiple(of:)는 배수인지 판단하는 메서드입니다. 여기서 배수는 어떤 정수와 다른 정수를 곱했을 때 나오는 수입니다. 예를 들어 6 = 2 * 3이므로 6은 3의 배수입니다. 아래 코드 처럼 이전에는 % 연산자를 사용해서 배수를 판단하는 코드를 작성했었죠 그렇다면 isMultiple(of:)와 어떤 문제를 해결 할 수 있길래 애플에서 공식적으로 제공하고 있을까요? let number = 6 if number % 3 == 0 { print("6은 3의배수") } 첫 번째로, 0으로 나누는 상황을 볼 수 있는데요. number % 0 == 0 은 무조건 참 입니다. number.isMultiple(of: 0)은 nu.. 2023. 1. 11.
UITextField return키(키보드 하단 오른쪽 파란색버튼) 눌렀을 때 이벤트를 받아보자 func textFieldShouldReturn 안녕하세요~! 오늘은 UITextField Delegate 메소드중 하나인 func textFieldShouldReturn(_ textField: UITextField) -> Bool 에 대해서 알아 보겠습니다. 키보드가 나오는 많은 곳에서 return(엔터키)키를 누른 후 이후 동작들을 처리하고 싶은 경우가 있습니다. 예시로 검색을 완료하고나서 리턴 키를 누르고 난 후, 팝업을 노출시키고 싶다던지 아니면 검색 결과에 대한 화면으로 이동 하고 싶은 경우 등등, 여러 이벤트들이 있을겁니다. 이때 위 함수를 채택하면 처리가 가능합니다. 아래 예시를 같이 보시죠 로그인 화면에서 이메일과 비밀번호를 받을 수 있는 화면 입니다. return키에 대한 이벤트를 받기 위해 delegate를 연결 했습니다. impor.. 2023. 1. 4.
Swift5.0 향후 변경 될 수 있는 Enum(열거형) switch @unknown 속성 처리 SE-0192 안녕하세요~! 오늘은 Enum에 대해서 이야기 해보려고 하는데요. 이번 Swift5.0에서 추가된 @unknown 속성에 대해서 이야기 해보려고 합니다. 어떤 역할을 하는지 같이 보시죠~! 보통 Enum값 분기처리시 Switch문을 많이 사용하는데요. enum에 있는 모든 case들을 무조건 처리 해야합니다. @unknown 속성을 사용해서 미묘하게 다른 두 가지 방법을 구분할 수 있는데요 아래 예시를 보겠습니다. 패스워드 입력시 발생 할 수 있는 에러를 간략하게 enum으로 표현했습니다 enum PasswordError: Error { case short case obvious case simple } 에러 처리를 하는 모습을 볼 수 있습니다. func showPasswordError(_ error: .. 2023. 1. 3.
반응형