[Swift] 제어 흐름
Develop/iOS2024. 5. 2. 17:33[Swift] 제어 흐름

제어 흐름Swift는 여러 가지 제어 흐름 구문을 제공한다.while, if, guard, switch, break, continue가 제어 흐름 구문에 해당한다.Swift는 Array, Dictionary, ranges, String 등을 쉽게 다룰 수 있는 for-in 구문도 제공한다.Swift의 switch 구문은 C언어의 것보다 더 강력한 기능들을 제공한다.case들을 tuple, 특정 타입에 대한 cast를 포함해서 좀 더 많은 패턴으로 구성할 수 있다.Switch의 case 일치 값은 임시 상수 혹은 변수에 담길 수 있다.복잡한 조건은 각 케이스의 where 절로 표현될 수 있다.  For-In Loopsfor-in loop 구문은 Array의 값들, String의 Character 값들과 같..

[Swift] 모음 타입들
Develop/iOS2024. 2. 23. 15:23[Swift] 모음 타입들

모음 타입들Swift는 여러 값들을 저장하기 위해 Array, Set, Dictionary라는 Collection Type(컬렉션 타입)을 제공한다.Array(배열)은 순서대로 값을 모은 것이고,Set(집합)은 순서가 없는 값들을 모은 것이다.Dictionary는 Key-Value 쌍을 순서 없이 모은 것이다.  Swift의 Array, Set, Dictionary에 저장되는 값은 항상 명확한 타입을 가지고 있어야 한다.만약 Int자료형을 저장하는 Array에 String 타입의 값을 넣으려고 하면 오류가 발생한다.  Mutability of Collections개발자가 Array, Set, Dictionary를 만들어 변수에 할당하면 해당 컬렉션들은 모두 변경 가능하다.즉, 값을 추가, 제거, 변경할 ..

[SWIFT] 문자열과 문자
Develop/iOS2024. 2. 16. 20:56[SWIFT] 문자열과 문자

문자열과 문자 String(문자열)은 "Hello World"와 같이 Character(문자)들이 합쳐진 것이라고 볼 수 있다. Swift에서 문자열 및 문자 타입은 코드에서 텍스트를 유니코드 호환 방법으로 제공하고 문법적인 부분은 C와 비슷하다. 문자열의 연결은 `+` 연산자를 사용하여 수행할 수 있다. 물론 문자열도 상수와 변수로 선언하여 변경 가능성을 관리해 주어야한다. 문자열 보간을 통해 어떠한 문자열에서 다른 문자열을 불러올 수도 있다. Swift의 문자열은 유니코드 문자로 구성된다고 한다. String Literals 개발자는 미리 정의되어 있는 String 값으로 문자열을 사용할 수 있다. 문자열을 사용할 때는 두 개의 `"` 안에 원하는 문자열을 써주면 된다. Multiline String..

[SWIFT] 기본 연산자들
Develop/iOS2024. 2. 16. 19:44[SWIFT] 기본 연산자들

기본 연산자들 Operators(연산자)는 값을 확인, 변경 또는 결합하는 데 사용하는 특수 기호 또는 Phrase이다. 예를 들어 `+` 연산자나 `&&` 연산자가 있다. Swift는 C언어 연산자의 여러 코딩 오류를 제거하기 위해 기능을 향상시킨 연산자를 지원한다. `=` 연산자는 값을 반환하지 않는데 이는 `==` 연산자와의 혼동에 의해 실수로 사용되지 않도록 하기 위해서다. 산술 연산자(`+`,`-`,`*`,`/`)는 값 오버플로를 감지하고 오류를 발생시키기 때문에 허용된 값보다 크거나 작은 숫자를 사용할 수 없게 도와준다. Swift는 C에서는 찾을 수 없는 `.. `, `=`, `≤` Swift 연산자에는 `===`, `!==`도 있는데 이는 두 객체 참조가 모두 동일한 객체 인스턴스를 참조하..

[SWIFT] Swift 문법의 기초
Develop/iOS2024. 2. 15. 19:28[SWIFT] Swift 문법의 기초

Swift 문법의 기초 Swift는 IOS, macOS, watchOS, tvOS를 만들기 위한 새로운 프로그래밍 언어이다. 기초적인 자료형으로는 Int, Double, Float, Bool, String, Array, Set, Dictionary가 있다. C언어와 마찬가지로 Swift는 값을 저장하고 참조하기 위해 변수를 사용하고 이름으로 변수를 구분한다. Swift에는 변수 중에서도 값을 변경할 수 없는 Constant(상수)를 제공하고 이로 인해 C에서 보다 더 많은 기능을 수행할 수 있다. Swift에는 Objective-C에서는 볼 수 없는 tuple(튜플) 형식도 제공한다. 튜플을 사용해서 여러 값을 하나의 값으로 반환할 수도 있다. Swift에서는 Optional Type(옵셔널 타입)을 제..

[iOS][ERROR] Button AddTarget 에러
Develop/iOS2024. 2. 15. 18:01[iOS][ERROR] Button AddTarget 에러

문제 발생 Flutter를 하다가 다시 iOS 네이티브를 공부하려고 돌아오면서 몇 가지 UI들에 대해 테스트를 해보고 있었다. 스토리보드를 사용하지 않고, 코드로만 UI 구성하기를 연습하고 싶어서 스토리보드를 없애고 하나씩 확인을 해보고 있었다. 그 중 버튼을 눌러서 다른 화면으로 넘어가는 것을 해보고 있었는데, 아래의 코드에서 오류가 나기 시작했다. ▼ class ViewController: UIViewController { let testButton : UIButton = { let button = UIButton() button.setTitle("Button", for: .highlighted) button.layer.cornerRadius = 20.0 button.backgroundColor = ..

[iOS][Swift] Swift의 메모리 관리 : ARC 2
Develop/iOS2024. 2. 11. 20:20[iOS][Swift] Swift의 메모리 관리 : ARC 2

이전 포스트가 있는 글입니다! [Swift] Swift의 메모리 관리 : ARC 1 → 개요 이전 포스트에서 Swift에서 메모리 관리를 해주는 ARC가 어떤 식으로 메모리를 관리하는 지 확인했다. Strong Reference, Weak Reference, Unowned Reference 의 세 가지 참조에 대해 알아보았고, Strong Reference Cycle을 해결하는 방법으로 Weak와 Unowned Reference에 대해 알아보았다. 메모리 누수가 왜 일어나는지와 그에 대한 기본적인 해결에 대해서 배웠다면, 이제는 우리가 많이 사용하는 문법에서 발생하는 문제에 대한 해결을 볼 것이다. Strong Reference Cycles for Closures Strong reference cycle..

[iOS][Swift] 클로져 캡쳐에 대한 이해
Develop/iOS2024. 2. 11. 20:02[iOS][Swift] 클로져 캡쳐에 대한 이해

개요 Swift를 공부하다보면 lambda와 비슷한 개념으로 클로져(Closure)라는게 나온다. 내용 자체는 익명 함수와 비슷한데, 초반부터 나오는 캡쳐(Capture)라는 용어가 굉장히 이해하기가 힘들었다. ▼ 공식문서에서도 이에 대해 다루기는 하지만 캡쳐를 하는 방법에 대한 내용 위주고, 이해 위주는 아니었기에 이해하기 쉽게 정리해보기로 했다. ▼ 캡쳐(Capture)가 정확히 뭐야? 캡쳐의 정의 클로져의 캡쳐는 클로져의 내용에서 주변에 있는 외부 context의 상수와 변수를 사용하기 위해 참조하는 것을 말한다. 이렇게 하면 설령 외부 context가 사라지더라도, 클로져에서는 계속해서 연산을 수행할 수 있게 된다. 공식문서의 예제를 보자. ▼ func makeIncrementer(forIncre..

[iOS][Swift] Two Phase Initialization
Develop/iOS2024. 2. 9. 16:22[iOS][Swift] Two Phase Initialization

개요 초기화에 관해서 전체 내용을 정리하기 전에, two phase initialization에 대해서 먼저 보고 들어가는 것이 다른 개념들을 이해하는데 도움이 될 거라고 생각이 들었다. 그래서 two phase initialization에 대해 먼저 정리를 하고 나중에 초기화에 관해 전체적으로 보기로 했다. 두 단계로 진행되는 초기화 Swift의 클래스 초기화는 두 단계로 진행이 된다. 첫번째 단계에서는 클래스에 명시된 값에 따라 각 stored property들이 초기화가 된다. 모든 stored property에 대한 초기 상태가 정해지고 나면(예를 들면 메모리 할당), 두번째 단계가 실행이 된다. 두번째 단계에서는 클래스에게 stored property들의 값을 사용자가 설정 할 수 있는 기회가 ..

[iOS][Swift] Swift의 메모리 관리 : ARC 1
Develop/iOS2024. 2. 9. 16:08[iOS][Swift] Swift의 메모리 관리 : ARC 1

개요 기본적으로 거의 모든 컴퓨터는 2가지에 데이터를 보관한다. 하나는 디스크, 다른 하나는 메모리(RAM)로 힙 이라고도 한다. 우리가 보는 메모리 관리는 사실상 힙 메모리 관리라고 볼 수 있다. 디스크에 있는 데이터를 바로 가져다 쓰기에는 데이터를 읽는 속도가 굉장히 느리기 때문에, 당장 사용할 프로그램과 데이터들을 메모리에 미리 불러 놓은 뒤에 메모리의 빠른 읽기 속도를 활용하여 프로그램을 실행시킨다. 이는 아이폰에서도 똑같이 동작을 하며, 앱이 실행되는 동안 사용되는 클래스 인스턴스들은 모두 이 메모리 안에 저장이 된다. 메모리 관리라고 하면 엄청나게 거창한 무언가를 하는 것 처럼 느껴지지만 사실 프로그램이 요구로 하는 곳에 메모리 자원을 주고, 프로그램이 더 이상 사용하지 않는 메모리를 회수하는..

image