값이 있을 수도 있고, 없을 수도 있는 변수nil의 가능성을 문서화하지 않아도 코드만으로 표현가능문서/주석 작성시간 절약전달받은 값이 옵셔널이 아니라면 nil 체크를 하지 않더라도 안심하고 사용효율적인 코딩예외상황 최소화옵셔널은 enum과 general의 합작품! 옵셔
Swift에서는 대부분의 타입이 구조체로 이루어져 있으므로 중요! 구조체의 정의 static 키워드를 앞에 붙여주면 Sample 타입에서만 사용할 수 있는 타입 프로퍼티이고, static 안 붙여있는 프로퍼티는 인스턴스 프로퍼티이다. mutable은 var로 선언
Swift의 열거형은 다른 언어에서의 열거형과는 다름유사한 종류의 여러 값을 한 곳에 모아서 정의한 것 예) 요일, 월, 계절 등대문자 카멜케이스를 사용하여 이름을 정의한다.각 case는 소문자 카멜케이스로 정의한다.각 case는 그 자체가 고유의 값이다. (각 cas
Class, Struct, Enum을 비교해보면 Class만 유일하게 참조타입이고 상속이 가능하다.구조체는 언제 사용할까?다른 객체 또는 함수 등으로 전달될 때 참조가 아닌 복사를 원할 때자신을 상속할 필요가 없거나, 자신이 다른 타입을 상속받을 필요가 없을 때App
같은 기능이어도 함수로 만들면클로저를 사용하면함수는 클로저의 일종이므로 sum 변수에는 당연히 함수도 할당할 수 있다.클로저는 주로 함수의 전달인자로 사용된다.클로저가 함수의 마지막 전달인자라면 마지막 매개변수 이름을 생략한 후 함수 소괄호 외부에 클로저를 구현할 수
프로퍼티의 종류저장 프로퍼티연산 프로퍼티 (var로만 선언 가능)인스턴스 프로퍼티타입 프로퍼티프로퍼티는 구조체, 클래스, 열거형 내부에 구현할 수 있다. 다만 열거형 내부에는 연산 프로퍼티만 구현할 수 있다.② 연산 프로퍼티인 westernAge에 값을 세팅해주면 se
Swift의 상속은 클래스, 프로토콜 등에서 가능하다.열거형, 구조체는 상속이 불가능하다.Swift는 다중상속을 지원하지 않는다.야곰의 스위프트 기본 문법 강좌를 수강하며 작성한 내용입니다.
인스턴스가 생성될 때 모든 저장 프로퍼티에는 정상적인 값들이 초기화되어있어야 한다는 규칙이 존재한다. 위의 코드처럼 jason이라는 PersonA의 인스턴스를 생성할 때, 저장 프로퍼티 중 하나라도 초기화되어있지 않다면 오류가 발생한다. 하지만
구조체 또는 클래스 안에 프로퍼티로 구조체를 사용하고, 그 안에서 또 프로퍼티로 구조체를 사용하고, 이런 식으로 구조체를 타고 타고 사용해야 하는 경우가 있다.프로퍼티 자체가 옵셔널인 경우 계속 nil인지 아닌지 체크를 해야 하는데, 이 때 옵셔널 체이닝을 유용하게 사
Swift의 타입캐스팅은 인스턴스의 타입을 확인하는 용도, 또는 클래스의 인스턴스를 부모 혹은 자식 클래스의 타입으로 사용할 수 있는지 확인하는 용도로 사용한다. is, as를 사용한다.hana는 Person을 상속받으므로 Person과 Student에서 모두 true
어플리케이션이 동작 도중에 생성하는 다양한 결과값을 동적으로 확인하고 안전하게 처리할 수 있도록 한다. assert assert 함수는 디버깅 모드에서만 동작하며, 주로 디버깅 중 조건의 검증을 위해 사용한다. assert함수의 someInt == 0 조건이 맞으면
📌 프로토콜 프로토콜은 특정 역할을 수행하기 위한 메서드, 프로퍼티, 기타 요구사항 등의 청사진을 정의한다. 구조체, 클래스, 열거형은 프로토콜을 채택(Adopted)해서 특정 기능을 수행하기 위한 프로토콜의 요구사항을 실제로 구현할 수 있다. 프로토콜이 갖는 의
익스텐션은 구조체, 클래스, 열거형, 프로토콜 타입에 새로운 기능을 추가할 수 있는 기능이다.기능을 추가하려는 타입의 구현된 소스 코드를 알지 못하거나 볼 수 없다 해도, 타입만 알고 있다면 그 타입의 기능을 확장할 수도 있다.익스텐션이 타입에 추가할 수 있는 기능연산
📌 오류처리 Swift에서 오류는 주로 Error 프로토콜과 열거형을 통해 처리한다. 오류가 발생하면 throw를 이용해 자신을 호출한 지점에 오류를 던져준다. 오류 발생의 여지가 있는 메서드는 throws를 사용하여 오류를 내포하는 함수임을 표시한다. 예를 들면
map 컨테이너 내부의 기존 데이터를 변형하여 새로운 컨테이너 생성 -> 전달인자 자리에 클로저가 들어와서, 각각의 요소를 어떻게 변형해서 무엇으로 돌려줄 것인지 지정한다.
-
여러 장의 이미지를 에셋에 넣어서 array로 관리하는 방법 말고, 하나의 GIF파일로 로딩애니메이션을 만들고 싶었당
얼럿 안에 피커뷰를 넣어보자 ~! 💡
TagListView를 직접 구현해보자 💪
TagListView 오픈소스 라이브러리 활용하기 😛