본문 바로가기

분류 전체보기

(54)
Swift 함수(가변인자) 가변인자(Variadic Parameters)를 가진 함수에 대해 알아보겠습니다. 하나의 매개변수로 여러개의 매개변수를 보낼 수 있습니다. 가변인자로 전달 받은 데이터는 배열 형태로 전달이 됩니다. 가변인자는 함수마다 1개씩만 가지고 있을 수 있고 가변인자는 기본값을 가질 수 없습니다. 가변인자를 사용하기 위해서는 매개변수 타입 선언시 뒤에 "..."을 붙여주면 됩니다. ex) Int..., Double..., String... 호출 시에는 ","(comma)를 사용하여 나열하면 됩니다. 가변인자 사용법 func printNames(_ names: String...) -> [String] { return names } print(printNames("둘리", "고길동", "또치", "마이콜")) stru..
Swift 서브 스크립트 (Subscript) let mars = Planet[4] print(mars) // saturn 서브스크립트(Subscript)가 뭘까? 클래스, 구조체, 그리고 열거형은 콜렉션, 리스트 또는 시퀀스의 멤버 요소에 접근하기 쉽게 해주는 서브 스크립트(Subscript)를 정의할 수 있다. 대체 이게 무슨 말이냐? 라고 한다면 나도 이해가 잘 안된다. 음... 근데 설명을 보다보니 우리가 항상 쓰던 것이 서브 스크립트였다. 설정과 검색을 위한 별도의 메서드 없이 인덱스로 값을 설정하고 조회한다? 이건 자주 사용해오던 배열이라던가 딕셔너리에서 사용한 것이 아닌가 var arr: [Int] = [1,2,3,4,5] arr[2] // 3 var dic: [String: Int] = ["red": 1, "yellow": 2, "bl..
코드베이스로 UIKit 시작하기 File Navigator - main.storyboard 파일 삭제 빌드를 하게 되면 Could not find a storyboard named 'Main' in bundle NSBundle 어쩌구 Runtime Error가 발생하게되는데 Info.plist - Configuration Name 필드 삭제 Info.plist 파일로 이동 Application Scene Manifest Scene Configuration Window Application Session Role Item 0 (Default Configuration) Storyboard Name 삭제 Build Settings로 이동 Build Settings에 있는 Main.storyboard에 대한 정보를 지워야 한다. 검색창에 Ma..
Swift 액터(Actor) 스위프트의 구조화된 동시성은 여러 작업을 동시에 수행하기 위한 강력한 플랫폼을 제공하여 앱 성능과 응답성을 크게 향상시킨다 동시성의 단점 중 하나는 여러 작업이 동일한 데이터를 동시에 접근할 때 문제가 발생할 수 있으며 해등 접근에는 읽기와 쓰기 작업이 포함되어있다는 것이다. 이러한 유형의 문제를 데이터 경쟁이라고 하며 간헐적인 충돌 및 예측할 수 없는 앱 동작으로 이어질 수 있다. 보다 유연하고 동시 작업이 시작되는 위치에 관계없이 작동하는 해결책은 스위프트 액터(Actor) 를 사용하는 것이다. 액터 개요 액터는 한 번에 하나의 작업만 데이터에 접근할 수 있도록 내부 변경 가능 상태에 대한 비동기 접근을 제저하는 스위프트 타입이다. 액터는 참조 타입이고, 속성, 생성자 및 메서드를 포함한다는 점에서 ..
자료구조(Data Structure)에 대한 기본적인 이해 자료구조란 무엇인가? 우리가 공부할 자료구조라는 것이 무엇인지 이야기해보자. 자료구조에서는 데이터를 표현하고 저장하는 방법에 대해서 설명한다 내가 본 책에는 이런 말이 있다. "프로그램이란 데이터를 표현하고, 그렇게 표현된 데이터를 처리하는 것이다." 위에서 말하는 '데이터의 표현'은 '데이터의 저장'을 포함하는 개념이다. '데이터의 저장'을 담하는 것은 바로 자료구조(Data Structure)이다. 우리가 항상 코딩을 할 때 선언해주는 어떤 데이터 타입(Int, Float, Character, String)의 변수도 구조체의 정의도 자료구조에 속한다. Int형 변수도, 구조체도 데이터를 표현 및 저장하는 방법중의 하나이기 때문이다. 뿐만 아니라 우리는 배열을 선언해서 여러개의 정보를 저장한 적도 많다..
SwiftUI로 알아보는 동기(SYNC) 비동기(ASYNC) 에러 핸들링 앞서 작성된 동기(SYNC) 비동기(ASYNC)도 블로그로 따로 정리해두긴 했다. https://minjae1995.tistory.com/27 Swift 동기(SYNC) 비동기(ASYNC) 스위프트 구조화된 동시성 개요 동시성 동시성(concurrency)은 여러 작업을 병렬로 수행하는 소프트웨어 기능이라고 할 수 있다. Swift는 구조화된 방식으로 비동기(asynchronous)와 병렬(parallel) 코드 작 minjae1995.tistory.com 제가 잡아줄 에러를 열거형 enum InputNumberError: Error { case bothInputZero, sameInput } 사용해 줄 프로퍼티 @State private var inputNum1: Int? // 첫 번째 입력값 저장 프..
Swift 동기(SYNC) 비동기(ASYNC) 스위프트 구조화된 동시성 개요 동시성 동시성(concurrency)은 여러 작업을 병렬로 수행하는 소프트웨어 기능이라고 할 수 있다. Swift는 구조화된 방식으로 비동기(asynchronous)와 병렬(parallel) 코드 작성을 지원한다. 비동기 코드는 일시적으로 중단되었다가 다시 실행할 수 있지만 한 번에 프로그램의 한 부분만 실행한다. 병렬 코드는 동시에 코드의 여러 부분이 실행됨을 의미한다. 동시성이라는 용어를 사용하여 비동기와 병렬 코드의 일반적인 조합을 나타낸다. 스레드(thread) 메인 프로세스 내에서 실행되는 미니 프로세스로 생각할 수 있으며, 그 목적은 애플리케이션 코드 내에서 병렬 실행의 형태를 가능하게 하는 것이다. Swift에서 동시성 모델은 스레드의 최상단에 구축되지만 직접적..
Swift 에러 핸들링 스위프트 코드를 아무리 신중하게 설계하고 구현했다 하더라도 앱을 통제할 수 없는 상황은 반드시 발생한다. 예로 인터넷 연결하여 통신하는 것을 기반으로 동작하는 앱이라면 아이폰의 네트워크 통신이 끊겨버리는 것을 막을 수가 없으며 사용자가 비행기 모드를 활성화하여 인터넷 통신이 끊겨버리는 것도 막을 수가 없는 것이다. 이러한 에러를 확실하게 처리하도록 구현을 하는 수밖에 없는 것이다. 예를 들어 앱을 계속 사용하려면 인터넷을 연결할 필요가 있다라는 것을 사용자에게 앱을 통해 알려주는 것이다. 스위프트에서 에러를 처리하는 방법은 두 가지 단계로 나뉜다. 첫 번째는 iOS 앱의 메서드 내에서 원하지 않는 결과가 나올 경우 에러를 발생(throwing) 하는 것이고, 두 번째는 메서드가 던진(throwing) 에..