순차적으로 스택에 저장되기 때문에 LIFO로 호출된다.
에러나면서 함수를 반환하지 않고 종료하기 때문에
비반환함수란 바로 앱 실행을 계속 유지할 수 없는 오류가 발생할 경우 이를 사용자에게 안내하고, 서버에 오류를 보고하는 등의 일을 한 후 프로세스를 종료시킬 때 사용
@propertyWrapper
struct Uppercase {
private var value: String = ""
var wrappedValue: String {
get { self.value }
set { self.value = newValue.uppercased() }
}
init(wrappedValue initialValue: String) {
self.wrappedValue = initialValue
}
}
some
키워드는 리턴 타입을 자동으로 그리고 빠르게 추론할 수 있는 스위치 기능이다.var body: some View { VStack(alignment: .leading) { Text("My hovercraft is full of eels") .font(.headline) Text("Mijn luchtkussenboot zit vol paling") .font(.subheadline) } }
사실 해당 뷰의 타입은 VStack<TupleView<(Text, Text)>> 이다. 해당 뷰의 타입을 구체적으로 입력할 수 있으나 그렇데 된다면 뷰의 구성이 변경될 때마다 이 타입을 계속 업데이트해야 한다.
some 키워드를 사용해 View를 선언하고 컴파일 타임에 구체적인 타입을 결정하도록 하는 것이 생산성이 더 좋다.
@frozen enum Result<Success, Failure> where Failure: Error
Encodable, Encodable -> data
Decodable, data -> Decodable
모르겠다..;
컴파일 타임에 자동으로 retain, release를 적절한 위치에 삽입
따라서 순환참조가 발생하는 것에는 한쪽에 weak 키워드를 넣어야 이를 방지할 수 있다.
strong: 강한 참조
weak : 약한 참조, 메모리가 해제될경우 레퍼런스가 nil이 됨
unowned: 자신이 참조하는 인스턴스의 retain count를 증가시키지 않는다. 사라지지 않을 것을 보장해야된다.
참고자료
- https://767473.notion.site/defer-defer-94b30eecec244821bb360a9e5cb501e3
- https://zeddios.tistory.com/1221#recentComments
- https://zeddios.tistory.com/226
- https://minosaekki.tistory.com/38
- https://velog.io/@un1945/Swift-Result-Type
- https://h4njun.tistory.com/entry/Codable
- https://jouureee.tistory.com/70
- https://kkimin.tistory.com/20