-
Mutability of Collections - CollectionsiOS/🟠 Swift 2020. 12. 1. 02:18
"컬렉션의 가변성" Swift 의 주요 컬렉션은 Arrays, Sets, Dictionaries 입니다. 이들의 동작방식은 다른 프로그래밍 언어와 크게 다르지 않고, 예상가능합니다. Swift 에서 이들의 가변성(Mutability) 은 var에 할당하는지 let 에 할당하는지에 따라 달라지게 됩니다. var 에 할당하면 mutable 이 되고, element 의 추가, 제거, 변경이 가능해집니다. 반대로 let 에 할당하면 immutable 이 되고, element 의 추가, 제거, 변경이 불가능해집니다. 단, element 가 참조 타입일 경우, element에 속한 멤버의 가변성에는 영향을 주지 않습니다. 관련 글: Value Type vs Refrence Type 흔히 값타입과 참조타입을 비교 설..
-
Self Type - GeneraliOS/🟠 Swift 2020. 11. 27. 23:40
" 컴파일러가 컨텍스트에 의해 추론하는 타입 " *Self Type 은 타입 입니다. 속성 self 와는 다른 개념입니다. extension Int { static let zero: Self = 0 // Int 로 추론됩니다. var zero: Self { // Int 로 추론됩니다. return 0 } func makeZero() -> Self { return Self() // Int 로 추론되어 Int 인스턴스를 반환합니다. } } Extension, Struct, Class, Enum, Protocol 에서 사용 가능합니다. Protocol 의 경우, Protocol 을 구현한 타입을 Self Type 으로 추론합니다. Self Type 의 장점은, 타입에 의존하지 않는 범용적인 코드를 만들 수 있..
-
[Swift] Property Observer (속성 감시자) 란?iOS/🟠 Swift 2020. 11. 27. 23:18
1차 수정: 2021/06/02 "속성값의 변경을 감시한다" 안녕하세요. 이번시간은 속성 감시자에 대해서 알아보겠습니다🐶 처음에는 문법 정도만 적은 글이었는데, 배우다 보니 적고싶은 내용이 많아져서 추가하게 되는 것 같아요. 그럼 시작해볼게요!! 속성 감시자(Property Observer) 는 속성(Property) 이 새로운 값으로 변경 될 때 호출 되는 코드 블럭입니다. 블록만 추가해 놓으면 속성이 변경될 때마다 호출되어서 속성감시자를 사용하면 이벤트에 대응하기 쉽습니다. var observingValue: String = "Hello" { didSet { self.textLabel.text = observingValue } } 위의 코드를 예로 들자면, observingValue 라는 String..
-
Side Effect - GeneraliOS/🟠 Swift 2020. 11. 24. 10:05
값이나 상태의 변경이 일어남을 의미 논리식에서 side effect가 발생할수 있는 코드를 살펴보겠습니다. var a: Int = 1 var b: Int = 2 func addA (val: Int a){ a += 1 return true } func addB (val: Int b){ b += 1 return true } // short circuit 으로 addB()가 호출되지 않는다 if addA() || addB() { print(a) // 2 print(b) // 1 } 따라서 의도하지 않은 논리적 오류가 발생할 수 있으므로 꼭 필요한 경우가 아니라면 조건식에서 함수를 호출하는 코드는 지양해야 합니다. 끝. 이전 글: Nested Functions - Functions Nested Functions..
-
Nested Functions - FunctionsiOS/🟠 Swift 2020. 11. 8. 19:10
"함수 블록 내부에 정의된 함수" Example Code func outer() -> () -> () { print("outer") // "outer" var a: Int = 3 func inner(){ print("inner") // "inner" print(a)// 3 -> Nested Function의 Scope : outer local block } return inner } let f = outer() f() outer 블록 외부에서 inner 에 접근 하는 방법 위 코드와 같이 inner를 리턴함으로서 간접적 Scope 확장을 통해 inner에 접근할 수 있습니다. 끝. 이전 글: Function Types - Functions Function Types - Functions Function ..
-
Function Types - FunctionsiOS/🟠 Swift 2020. 11. 8. 16:25
Function Types는 변수나 상수에 함수를 assign 하는 경우, 타입을 명시할 때 필요합니다. Swift에서 함수는 first-class citizen 이므로, 변수나 상수에 함수를 assign 할 수 있습니다. 이전 글에서 Function Notation만을 이용하여 타입 추론을 통해 저장하였지만, 함수도 자료형을 가지고 있으므로 명시적으로 변수 혹은 상수에 타입도 표기할 수 있습니다. 또한 클로저를 파라미터로 받는 코드를 이해하기 위해 Function Types을 이해하는 것은 필요합니다. Syntax /* Function Types */ (type) -> type () -> () // () -> void 로도 표기할 수 있습니다. Function에서 쓰는 void 는 리턴형이 없다는 것을..