
오늘은 inout 파라미터에 대해 알아보겠습니다! inout 파라미터를 알아보기 전에 먼저 알아야 할 것이 있습니다! 값 타입, 참조타입, 메모리인데요! 간단하게 살펴보고 inout 파라미터에 대해 살펴보겠습니다! 혹시 구조체는 값 타입, 클래스는 참조타입 들어보셨나요? 너무나 유명한 얘기죠 .. 그렇다면 값 타입은 무엇이고 참조 타입은 무엇일까요? 그 전에 메모리의 구조에 대해서 간단하게 살펴보겠습니다! 메모리는 코드, 데이터, 힙, 스택 총 4개의 구역으로 나누어 사용합니다!! 코드(프로그램)에는 앱의 모든 코드가 존재합니다. 데이터는 전역변수 / 타입(static/class)변수가 존재하며 앱이 실행되는 동안 불변합니다. 힙은 동적할당을 위한 영역이며 크기가 크고, 개발자가 잘 관리할 필요가 있는 ..

오랜만에 블로그 포스팅이네요. . 현실에서 벗어나 힐링도 좀 하고 . . 하느라 소홀했네요 . . 다시 갓생을 살아보겠습니다. . 오늘은 switch문과 where에 대해 살펴볼 예정입니다! 그 전에 if문에 대해 간단하게 살펴볼게요! 대게 조건문이라고 하면 If문과 switch문이 떠오를 것입니다! if문은 참과 거짓을 판단할 수 있는 문장을 조건으로 넣고 해당 조건이 만족한다면 중괄호 안에 코드를 실행합니다. seungchanAge라는 변수를 조건문에 넣고 true이면 정답ㅋㅋ이 나올 것이고 아니라면 else를 추가해 else 중괄호 안에서 처리할 수 있겠죠? 따라서, if문을 사용할 때에는 논리적은 구조 및 조건의 순서가 중요하다. 여러가지 조건을 한번에 처리할 수 있다. (&&, ||) 중첩해서도..
이 글을 쓰게 된 이유는 ... 무엇일까요 ... 배열에서 랜덤으로 가져와야 하는 부분이 있었는데 코드를 보시죠 .. @IBAction func tapQuoteGenerationButton(_ sender: Any) { // 0 ~ 4 사이의 난수를 생성 let random = Int(arc4random_uniform(5)) let quote = quotes[random] self.quoteLabel.text = quote.contents self.nameLabel.text = quote.name } 버튼을 클릭하면 배열의 값을 받아 랜덤으로 바뀌는 부분이었습니다..! 서론이 길었으니 ,, 본론으로 바로 가시죠 Swift에서 제공하는 랜덤함수에는 세가지가 있습니다. arc4random() arc4rand..

assert - 특정 조건을 체크하고, 조건이 성립되지 않으면 메세지를 출력 하게 할 수 있는 함수 - assert 함수는 디버깅 모드에서만 동작하고 주로 디버깅 중 조건의 검증을 위하여 사용한다. guard 문 - 뭔가를 검사하여 그 다음에 오는 코드를 실행할지 말지 결정 하는 것 - guard 문에 주어진 조건문이 거짓일 때 구문이 실행됨 assert import Foundation var value = 0 assert(value == 0) value = 2 aseert(value == 0, "값이 0이 아닙니다") playground에서 코드를 작성하고 실행하면 런타임 에러가 발생한다. assert 함수는 값을 실행하고 조건이 맞지 않으면 에러를 발생시키는 함수기 때문에 이렇게 나온다. guard ..

클로저 { (parameters) -> return type in statements } { (매개변수 목록) -> 반환타입 in 실행 코드 } 클로저는 일급 시민으로 변수, 상수 등으로 저장, 전달 인자로 저장이 가능한 형태 ! * 일급 객체의 특징 1. 모든 일급 객체는 함수의 실질적인 매개 변수가 될 수 있다. 2. 모든 일급 객체는 함수의 반환값이 될 수 있다. 3. 모든 일급 객체는 할당의 대사이 될 수 있다. 4. 모든 일급 객체는 비교 연산 (==, equal)을 적용할 수 있다. 우리가 사용했던 함수들은 모두 "이름 있는 클로저" 형태라고 생각하면 된다. 함수로 작성했던 것들 모두 (이름없는 함수인) 클로저로 표현이 가능 // 함수 (이름있는 클로저) 사용 func sumFunction(a..

구조체와 클래스의 공통점 프로퍼티와 메서드를 사용해서 구조화된 데이터와 기능을 가진다. 새로운 사용자 지정 타입을 만들어 준다. 초기화 Init을 정의해서 초기 상태를 설정 할 수 있다. 확장(extension)이 가능하다. 프로퍼티값에 접근할 때 점(.)을 사용한다. 프로토콜 사용이 가능하다 다음 조건 중 1개 이상을 만족하면 구조체의 주 목적이 관계된 간단한 값을 캡슐화 하기 원할 때 구조체의 인스터스가 참조되기 보다 복사되기를 원할 때 구조체가 프로퍼티나 메소드 등을 상속 할 필요가 없는 경우 구조체를 사용 ! ! // struct struct ValueType { var property = 1 } // class class ReferenceType { var property = 1 } let fi..
인스턴스 (instance) Swift 에서는 클래스 / 구조체 / 열거형에서 생성된 객체를 '인스턴스'라고 지칭한다. var Seungchan:Person = Person(); 프로퍼티 (Property) Swift 에서는 클래스, 구조체, 열거형과 연관되어 있는 정보 / 값 등을 의미한다. struct FixedLengthRange { var firstValue: Int var length: Int } 메서드 (Method) Swift 에서는 클래스, 구조체, 열거형과 관련된 함수라는 의미로 사용한다. class SomeClass { func simpleMethod() { print("Simple Method") } func sum(a: Int, b: Int) -> Int { return a + b ..
열거형 유사한 종류의 여러 값을 한 곳에 모아서 정의 enum 자체가 하나의 데이터 타입으로, 대문자 카멜케이스를 사용하여 이름을 정의 각 case는 소문자 카멜케이스로 정의 각 case는 그 자체가 고유의 값 각 case는 한 줄에 개별로도, 한 줄에 여러개도 정의 가능 enum 이름 { case 이름1 case 이름2 case 이름3, 이름4, 이름5 // ... } // 예제 enum BoostCamp { case iosCamp case androidCamp case webCamp } 열거형 사용 타입이 명확할 경우, 열거형의 이름을 생략 할 수 있다. switch 구문에서 사용하면 좋다. enum Weekday { case mon case tue case wed case thu, fri, sat,..
클래스 클래스는 참조 타입이다. 타입이름은 대문자 카멜케이스를 사용하여 정의한다. Swift의 클래스는 다중 상속이 되지 않는다. class 이름 { /* 구현부 */ } 프로퍼티 및 메서드 구현 class Sample { // 가변 프로퍼티 var mutableProperty: Int = 100 // 불변 프로퍼티 let immutableProperty: Int = 100 // 타입 프로퍼티 static var typeProperty: Int = 100 // 인스턴스 메서드 func instanceMethod() { print("instance method") } // 타입 메서드 // 상속시 재정의 불가 타입 메서드 - static static func typeMethod() { print("type..
구조체 스위프트 대부분 타입은 구조체로 이루어져 있다. 구조체는 값(value) 타입이다. 타입이름은 대문자 카멜케이스를 사용하여 정의 구조체 문법 struct 이름 { /* 구현부 */ } 구조체 프로퍼티 및 메서드 구현 struct Sample { // 가변 프로퍼티(값 변경 가능) var mutableProperty: Int = 100 // 불변 프로퍼티(값 변경 불가능) let immutableProperty: Int = 100 // 타입 프로퍼티(static 키워드 사용 : 타입 자체가 사용하는 프로퍼티) static var typeProperty: Int = 100 // 인스턴스 메서드(인스턴스가 사용하는 메서드) func instanceMethod() { print("instance meth..