UIKit 을 사용했을 때는 어떠한 변수에 변화가 생기면 해당 변화를 직접 관찰하고 반영 해 주어야 했는데 SwiftUI 에서는 property wrapper 를 활용해 이러한 작업을 자동화 할 수 있도록 했다.변화가 생기면 해당 변수의 값을 읽거나 새로 쓸 수 있음을
impot mapkit을 한다 속성을 사용하여 @State둘 이상의 보기에서 수정할 수 있는 앱의 데이터에 대한 정보 소스를 설정합니다. SwiftUI는 기본 저장소를 관리하고 값에 의존하는 뷰를 자동으로 업데이트합니다.Text기본 보기를 Map영역에 바인딩하는 보기로
이름과 위치 보기가 모두 설정되었으면 다음 단계는 랜드마크에 대한 이미지를 추가하는 것입니다.이 파일에 더 많은 코드를 추가하는 대신 마스크, 테두리 및 그림자를 이미지에 적용하는 사용자 지정 보기를 만듭니다.Image(\_:)이니셜라이저 를 사용하여 텍스트 보기를 T
SwiftUI 앱 라이프 사이클을 사용하는 앱은 App프로토콜을 준수하는 구조를 가지고 있습니다. 구조의 body속성은 하나 이상의 장면을 반환하며, 이는 차례로 표시할 콘텐츠를 제공합니다. 속성 은 @main앱의 진입점을 식별합니다.기본적으로 SwiftUI 보기 파일
키경로(문자열 처럼 쉽게 만들수 있는 인스턴스)로 속성에 쉽게 접근AnyKeyPath : 어떤 속성인지 특정되지 않음(보통, 함수 파라미터형식으로만 사용)PartialKeyPath : 타입에 대한 키패스(예를 들어 배열 같은 것으로 묶을때 사용)KeyPath<Ro
함수의 return의 의미 (일반적인 경우)(함수의 결과로 인한) 값을 리턴함수 내부로 전달했던 CPU실행의 제어권을 다시 돌려줌Nonreturning(논리터닝) 함수:제어권을 전달하지 않음(함수를 호출했던 코드로 다시 제어권을 전달하지 않음)명시적으로 제어권을 전달하
주요 프로토콜 Equatable / Comparable / Hashable Equatable : ==, != 비교 연산자 관련 프로토콜 Comparable : , =) Hashable : hash값을 갖게되어 값이 해셔블(값이 유일성을 갖게됨)해짐 Equatabl
Equatable : ==, != 비교 연산자 관련 프로토콜Comparable : < 연산자 관련 프로토콜 (>, <=, >=)Hashable : hash값을 갖게되어 값이 해셔블(값이 유일성을 갖게됨)해짐Equatable 프로토콜의 요구사항은static f
멀티쓰레드(Multi Thread)의 환경에서만 메모리 충돌이 일어나는건 아님구조체 등의 메서드에서 self(동일한 인스턴스)에 접근하는 경우 접근 충돌값 타입은 속성 하나가 아닌, 인스턴스 전체에 대한 읽고/쓰기로 접근 ⭐️
스위프트의 숫자 리터럴을 표기하는 방법2진법/8진법/16진법의 수도 직접 써 넣을 수 있음큰숫자는 읽기 쉽게하기위해 언더바를 붙이는 것도 가능(단순히 언더바를 읽지않음)플랫폼 사양에 따르는 타입 : Int, UInt (최근 대부분 64비트)8-bit : Int8, UI
유니코드(Unicode)는 전 세계의 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 산업 표준스위프트는 유니코드의 체계를 사용스위프트의 문자열(String)?쌍따옴표 안에 문자(Character)들을 연결모든 문자열은 개별 인코딩된 유니코드 문자들(e
애플이 자신들이 원하는 코드를 감출 수 있음코드의 영역을 분리시켜서 , 효율적 관리 가능컴파일 시간이 줄어듬( 컴파일러가 , 해당 변수가 어느 범위에서만 쓰이는지를 인지 가능)코드의 세부 구현 내용을 숨기는 것이 가능하도록 만드는 개념(객체지향 - 은닉화가 가능해짐)(
에러가 발생하는 경우, 에러를 따로 외부로 던지는 것이 아니라리턴 타입 자체를 Result Type(2가지를 다 담을 수 있는)으로 구현해서함수 실행의 성공과 실패의 정보를 함께 담아서 리턴case success(연관값)case failure(연관값)에러는 동일하게 정
제네릭이 없다면, 함수(클래스, 구조체, 열거형 등)타입마다 모든 경우를 다 정의해야 하기 때문에개발자의 할일이 늘어난다. (유지보수/재사용성 관점에서 어려움)제네릭 문법형식에 관계없이, 한번의 구현으로 모든 타입을 처리하여, 타입에 유연한 함수 작성가능 (유지보수/재
컴파일 타임 에러 —> 스위프트 문법과 관련된 에러(컴파일러가 미리 알고 수정해야한다고 알려줌)런타임 에러 —> 프로그램이 실행되는 동안 발생타임 에러 —> 크래시(앱이 강제로 종료)발생가능한 에러를 미리 처리해 두면, 강제종료되지 않음 (개발자가 처리해야만
예전 언어들은 모든 메모리를 수동 관리했음실제로 개발자가 모든 메모리 해제 코드까지 삽입해야함 (실수할 가능성 높음)retain() 할당 ---> release() 해제 (RC +1) (RC -1) 개발자는 실제 로직 구현 포함, 메모리 관리에
옵셔널타입에 대해 접근연산자를 사용하는 방법옵셔널타입에 대해, "접근연산자"를 사용할때, ?(물음표)를 붙여서, 앞의 타입이 값이 nil을 가질 수도 있음을 표시 옵셔널체이닝의 결과는 항상 옵셔널이다.옵셔널체이닝에 값 중에서 하나라도 nil을 리턴한다면, 이어지는
고차원의 함수함수를 파라미터로 사용하거나, 함수실행의 결과를 함수로 리턴하는 함수일반적으로 함수형 언어를 지향하는 언어들에 기본적으로 구현되어 있음map 함수filter 함수reduce 함수forEach, compactMap, flatMapSequence, Collec
이름이 없는(익명) 함수클로져와 함수는 기능은 동일 한테 형태만 다르다고 생각 하면됨함수를 1급 객체로 취급함수를 변수에 할당할 수 있다.함수를 파라미터로 전달이 가능하다.(함수에서) 함수를 반환할 수 있다. (리턴 가능)파라미터의 타입의 생략도 대부분 가능하다.(클로
ruby 기반 클라이언트 자동 빌드 오픈소스 라이브러리info.plist에서 버전과 빌드 올리는 작업타겟이 여러 개인 경우, 모든 타겟이 버전과 빌드가 동일한지 체크빌드3인 이상의 개발자가 동시에 개발하는 경우, 1년에 한 번 씩 certificate, provisio