목록정리 X/Swift (7)
나만의 공부 노트

Package.swift에 대해 제대로 이해해보자 사용하는 방법은 어렵지 않으니 패스..생성하는 법부터 바로 알아보자참고 사이트 : https://tech.kakao.com/posts/521Package 생성하기 File->New->Package(더 쉽게는 왼쪽 하단에 + 버튼으로 Package 추가) 또는 터미널에서 'swift package init'를 입력위 사진을 보니 Package가 xcodeproj와 거의 대응되는 용도로 사용되는 듯함 Package 생성 템플릿을 보니 보통, library나 command line/excutable을 만드는데에만 사용하는 것 같다. xcodeproj는 생성할 수 있는 템플릿이 다양하다 -> Package는 xcodeproj보다 단순화하여 library만을 다..
enum Example { case one(asdf: Int) func .... var .... { return .... } } 열거형은 if X, switch 문으로 활용 switch example { case .one(let temp): znsidvo = temp } 저장 프로퍼티 사용 X 만약 함수로 self의 값을 저장한다면 그 함수는 mutating으로 선언해야함(열거형은 값타입임)
1. lazy lazy로 변수를 선언하면 처음 사용되기 전까지는 연산이 되지 않는다! - 조건 : lazy는 반드시 var로 쓰여야함 -> 나중에 연산해서 넣어주기 때문에(let 이 안되는 이유) : struct, class 에서만 사용 가능 (그렇담 값, 참조 변수 둘 다 사용 가능!) : 계산 프로퍼티에 사용이 불가능 하다(당연한 말이겠쥬?) : 저장 프로퍼티이지만 옵저버(didSet, willSet)은 사용 불가함 : 보통 클로저를 이용하여 구현함, 클로저가 저장되어 있고 처음 사용할 때 클로저가 실행되는 형태, 다른 프로퍼티에 접근시 self로 접근하자 : 값을 넣는게 아니라 클로저를 넣어버리면 클로저가 self를 계속 참조하기에 순환 문제 발생할 수 있다(weak로 만들자) 변수 선언 시 알아야..
프로토콜은 타입이다! (인터페이스이기도 하지만 타입의 역할이 더 중요한 듯) class, enum, struct에 사용 가능하고 extension으로 확장도 가능하다 프로토콜을 extension 시에 extension은 함수의 body를 구현해야한다 -> 모순이지 않는가? (인터페이스잖아!) 하지만 이렇게 하지 않으면 기존에 프로토콜을 쓰던 애들은 갑자기 생겨버린 함수에 다 깨져버리는걸 ㅜ 그렇기에 이번만큼은.. 프로토콜이 extension으로 구현한 함수의 body를 default로 받아들여준다 프로토콜은 {get}, {get set} 만 가능(저장 프로퍼티인지 계산 프로퍼티인지는 명시 안해도 됨) 익스텐션은 계산 프로퍼티만 가능 -> 저장 프로퍼티를 사용하면 init에서 문제가 발생할 수 있기에(위에..

m.blog.naver.com/PostView.nhn?blogId=jdub7138&logNo=220379745883&proxyReferer=https:%2F%2Fwww.google.com%2F [Swift] Initialization Initializer 란? Initialize는 초기화라는 뜻입니다. 여기서 초기화라는 것은 모두 0값으로 보내버리는 ... blog.naver.com 여기 완벽핟;; 아래는 따로 적고 싶은 내용 적어둠 Swift는 기본적으로 서브클래스가 수퍼클래스의 이니셜라이저들을 상속받지 않은 것을 원칙으로 하고 특별한 경우에 자동 상속을 허용한다. 이니셜라이저의 자동상속은 다음의 조건을 만족해야 한다. 1. 만약 자식 클래스에서 추가된 저장 프로퍼티가 모두 디폴트 값을 가지고 있고, ..
클로저는 참조 타입이다(힙에 저장됨) 클로저 안에서 지역변수를 strong으로 캡쳐해놓으면 카운팅 효과