이번 포스트에서는 Objective-C에서 제공하는 하부 C언어 기능 중 블록에 대해 살펴보도록 하겠습니다. 블록은 Apple이 추가한 것으로 표준 ANSI C 정의에는 포함되지 않았습니다. 블록은 함수와 유사하게 생겼으며 동작 방식도 함수와 유사합니다. 또한 함수와 마찬가지로 Parameter를 넘겨줄 수도 있습니다. 다만, 함수와 다른 점은 블록은 함수나 메소드 안에서 정의할 수도 있고, 자신과 동일한 범위에 있다면, 블록 바깥에서 정의된 변수에도 접근이 가능합니다. 하지만 일반적으로 이러한 변수에 접근은 가능하지만 값을 변경할 수는 없습니다. 만약 이 값을 변경하고 싶다면 __block(block 앞에 _가 2번) 을 사용하면 블록 내에서 이런 변수의 값을 변경할 수 있게 됩니다. 블록은 함수와 메..
이번 포스트에서는 Swift에서 제공하는 Codable을 사용하여 JSON을 Encode하고 Decode하도록 하겠습니다. Codable은 Swift 4.x부터 지원하는 Protocol입니다. 공식 문서에 따르면 Codable은 A type that can convert itself into and out of an external representation." 자기 자신을 외부 표현으로 변환(Encode)하거나 외부 표현으로부터 변환(Decode)할 수 있는 타입이라고 합니다. 즉, Codable은 Encodable과 Decodable을 합친 것인데, 각각 정의를 살펴보면 아래와 같습니다. typealias Codable = Decodable & Encodable Codable은 Protocol 이기 ..
이번 포스트에서는 Delegate 패턴을 사용하여 View와 View Controller 간의 이벤트 전달 및 데이터 전달 방법에 대해 살펴보겠습니다. Delegate 패턴은 Protocol을 사용하여 구현하게 됩니다. Protocol에 대해 간단하게 정리해보자면, 사람이라는 Protocol을 정의했다고 가정해봅시다. protocol Person { func sayHello() func eat() } 위 예시 코드를 보면 인사를 하다와 먹다 라는 두 function이 정의되어 있습니다. 그러면 저 Person이라는 Protocol을 구현하는 Class를 하나 만들어 보겠습니다. class DennyKim: Person { func sayHello() { print("Hello My name is den..
이번 포스트에서는 Swift에서의 Closure에 대해 살펴봅도록 하겠습니다. 클로저(Closure)는 코드에 전달되어 사용할 수 있는 독립적인 기능 블록입니다. Swift의 클로저는 C 및 Objective-C의 블록 및 다른 프로그래밍 언어의 람다(Lambda)와 유사합니다. 클로저(Closure)는 정의된 컨텍스트에서 상수(Constant) 및 변수 (Variable) 에 대한 참조를 캡처하고 저장할 수 있습니다. 이것을 상수(Constant) 와 변수(Variable) 를 닫는 것으로 알려져 있습니다. Swift는 이 캡쳐와 관련한 모든 메모리를 자동으로 처리합니다. 캡쳐의 개념에 대해서는 후반부에서 살펴보도록 하겠습니다. 함수에 도입된 전역 함수와 중첩 함수는 실제로 특수한 클로저입니다. 클로저..
이번 포스트에서는 Swift에서의 함수에 대해 알아보도록 하겠습니다. Swift에서 함수를 생성하는 방법은 다음과 같습니다. func 함수명(인자 이름: 타입) -> 리턴 타입 { (함수 본체) return (반환 값) } 정의한 함수를 호출하는 방법은 다음과 같습니다. func plus(num1: Int, num2: Int) -> Int { return num1 + num2 } print(plus(1, 2)) // 3 함수의 Parameter Value와 Return Value Parameter가 없는 함수 func sayHelloWorld() -> String { return "hello, world" } print(sayHelloWorld()) // Prints "hello, world" 복수의 P..
이번 포스트에서는 Swift 개발 시 고려할 수 있는 메모리 안정성에 대한 주제를 다뤄보도록 하겠습니다. Swift에서는 메모리 접근 충돌을 막기 위한 작업이 이루어집니다. 그렇기 때문에 Swift 개발자는 Memory Safety에 대해 크게 고려하지 않아도 개발할 수 있습니다. 하지만 Memory Access Conflict가 발생할 수 있는 상황을 이해하고 Memory Access Conflict를 방지할 수 있는 코드를 어떻게 작성할 수 있는지 이해하는 것은 중요합니다. Memory Access Conflict는 변수에 값을 쓰는 작업과 읽는 작업이 동시에 이루어질 경우 주로 발생합니다. var num1 = 1 var num2 = 2 print("num1 : \(num1), num2 : \(num..
이번 포스트에서는 Swift에서 제공하는 다양한 제어문에 대해 살펴보도록 하겠습니다. Swift에서는 while, if, guard, switch, for-in 등 다양한 제어문을 제공합니다. 1. White Swift에서는 while문과 repeat-while문 두 가지 종류의 while 문을 제공하고 있습니다. while 조건 { 코드 구문 } 실제 사용 예시는 아래와 같습니다. var score = 0 while true { score += 10 if score > 100 { print("while문을 종료합니다.") break } } Repeat-While Repeat - While 문은 다른 언어에서는 do-while이라고 불리는 것과 동일합니다. repeat { 실행 구문 } while 조건 ..
이번 포스트에서는 Swift에서 제공하는 Collection 타입에 대해 알아보도록 하겠습니다. Swift에서는 Collection Type으로 Array (배열), Dictionary (딕셔너리), Set (집합) 을 제공합니다. Objective-C에서는 Immutable과 Mutable이 구분되어 있었는데 Swift에서는 var와 let으로 그 기능을 사용할 수 있습니다. var로 정의하게 되면 Mutable이 되는 것이며 let으로 정의되면 Immutable이 됩니다. (예를 들어, NSMutableArray와 NSArray는 swift에서 var arr: [Int]? / let arr = [Int]() 와 같이 사용할 수 있습니다.) var arrayMutable: [Int]? // 변경 가능 ..
- Total
- Today
- Yesterday
- 코틀린
- 애플워치
- Swift
- 상속
- apple
- Elliotable
- Reactive programming
- Rxjava
- Notissu
- C++
- 스위프트
- 컬렉션
- Kotlin
- CloudComputing
- watchos
- databinding
- retrofit
- Auto Layout
- ios
- XCode
- 함수형
- android
- 안드로이드
- 함수형프로그래밍
- java
- 알고리즘
- 오토레이아웃
- 아이폰
- SwiftUI
- Apple Watch
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |