![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/xMS3z/btrJfYZfkEx/d3mLAe8Zqprew8T4nNgkh0/img.png)
1.Optional 이란?? wrapped 값 또는 없는 nil을 나타내는 있는 타입입니다. 다시말해 값이 있을수도, 없을수도 있음을 알려줍니다. 2.Optional 선언하기 옵셔널을 선언하는 방법은 다음과 같습니다. let shortForm: Int? = Int("42") let longForm: Optional = Int("42") 보통은 Optional이라고 쓰기보다는 뒤에 ? 를 붙여서 많이 사용하죠. 어떻게 선언하든 의미는 같습니다. 옵셔널을 명시해 주면 shortForm은 값이 없을 수도 있다, 즉 nil이 들어갈 수 있음을 알려줍니다. 언제 사용할까? 우선 공식 문서에 있는 예제를 가져왔습니다. let possibleNumber = "123" let convertedNumber = Int(p..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/lgm2O/btrA4STZRbk/Ao4ZRfWX1Do0d6d02lqaU1/img.png)
공식문서를 보고 번역+이해한 내용을 덧붙인 글입니다😊😊 🤔 Propery Wrapper?? A property wrapper adds a layer of separation between code that manages how a property is stored and the code that defines a property 음... 프로퍼티가 저장되는 방식을 관리하는 코드와 정의하는 코드를 분리해준다 이정도로 직역하면 될 거 같다. 보통은 변수를 정의할 때 이렇게 정의하고 끝났겠지만 get/set을 정의해 줌으로써 number가 항상 12이하의 값을 가질 수 있도록 해준다. 아래 코드처럼!! (property Wrapper를 정의하는데 wrappedValue는 반드시 필요한 변수이다) 정의를 다시 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/ctaVCF/btryF8XJCsX/r1UGubj76gx212ZDTo5mfk/img.gif)
1.MVVM이란? Model-View-ViewModel의 약자로 소프트웨어 아키텍처 패턴이다 앱이 수정되고, 규모가 커짐에 따라 UI와 비즈니스 로직사이의 결합도가 커지게 되고 이는 UI수정에 대한 비용이 커지고 유닛테스트가 어렵게 만든다. MVVM 패턴을 사용함으로써 비즈니스 로직과 프레젠테이션 로직을 UI로부터 분리할 수 있고, 이는 앱의 개발, 유지보수, 테스트를 더 용이하게 해준다. 또한 코드 재사용이 가능하게 해주며 개발자와 UI디자이너가 각 부분을 개발할 때 더 쉽게 협력할 수 있게 해준다 1.1 MVC에서 MVVC(수정 중) 이 사진은 MVC의 전형적인 모습이다. Model은 data, View는 UI, View Controller는 이 두개의 중개자이다. View와 View Controll..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bILAAf/btrmaFtZBUV/4bRtxdcnUqfbtTfN3sVnJ0/img.png)
1.클로저란? 공식 문서를 보면 -클로저란 코드 안에서 전달되고 사용가능한 함수 블록이다. ( {}를 이용해 클로저 구문을 작성한다) -람다함수와 비슷하다. -자신이 정의된 문맥으로부터 모든 상수와 변수의 값을 캡처하거나 저장할 수 있다.(아직 뭔소린지 모르겠음) +) 일회용 함수를 작성할 수 있는 구문 익명함수(일반 func함수는 이름이 있는 클로저이다.) 2.클로저 표현 closure는 함수이긴 하지만 func를 사용하지 않는다. 1.매개변수와 반환타입이 없는 클로저 +)클로저는 변수 또는 상수에 할당이 가능하다. 2.반환 값이 없는 클로저 +)클로저를 할당없이 직접 호출해야 하는 경우 ()로 감싸준다.(거의 쓰이지 않음) 3.클로저 축약 배열을 내림차순으로 정렬하는 sort함수를 예시로 들었다. 1..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cnGhKT/btriUEzkBhZ/THUZWvKrjXKzYmkuBPGJg1/img.png)
swift는 변수 선언과 동시에 초기화해주면 자동으로 타입추론을 해주기 때문에 따로 자료형을 선언해주지 않아도 된다. 하지만 항상 선언과 동시에 초기화하지 않으며, 초기화를 한다고 하더라도 추론된 타입이 원하는 타입이 아닐 수도 있다. 그래서 나온 개념이 어노테이션. 즉, 어노테이션은 상수나 변수를 선언할 때 타입을 명시적으로 선언해 주는 문법이다. 어노테이션을 사용해야하는 경우는 다음과 같다. 1.선언과 초기화를 동시에 하지 않을 때 우선 초기화를 해주지 않으면 상수나 변수에 어떤 값이 들어갈 지 모르기 때문에 타입을 지정해주지 않으면 다음과 같은 에러를 보게된다. 바로 사용할 게 아니라면 반드시 타입을 지정해줘야한다. 2.추론된 타입이 원하는 타입이 아닐 때 위 코드처럼 선언을 하면, Characte..
갑자기 playground 실행 안될 때 1.[file]-[close {file name}] 2.[file]-[Close Playground] 3.Xcode 종료(cmd + q) 4.다시 실행 왜 갑자기 실행이 안됐던건지는 모르겠다. playground를 새로 생성해도 안되고, 완전히 xcode를 다시 종료했다가 켜니까 되네... *참고 https://stackoverflow.com/questions/53608795/xcode-playground-execution-failed
- Total
- Today
- Yesterday
- 백준알고리즘
- ios mvvm
- xcuserdata
- palera1n
- New Group
- readme ignore파일 포함한 repository
- Xcode
- property wrapper
- 애플 인증서
- 프로퍼티 래퍼
- 애플 인증
- sileo
- 백준 1065번 swift
- django
- mvvm in swiftui
- 클로저
- 장고
- 백준
- xcsharedata
- Widget
- closure
- New Group Without Folder
- SWiFT
- 파이썬
- 알고리즘
- main branch
- 이분탐색
- provisioning key
- ios
- 백준 4673 swift
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |