목록Swift (32)
아요 개발 일기
안녕하세요! 스위프트 공부하다보니, 메모리 구조에 대해 찾아보게 되었는데요! 메모리 구조에 대해서 잘 모르시는 분들은 [Swift] 메모리 구조 포스팅을 참고해주세요 :D 자.. ARC를 제대로 알아보기 전에.. Apple이 Swift가 나오기 전에 사용했던 언어! Object - C에서의 메모리 관리를 간단히 알아보겠습니다ㅎㅎ 출처 : https://i1.ruliweb.com/ori/21/02/01/1775da0b8275221e6.gif Object - C에서는 retain, release, autorelease 등을 통해 수동으로 메모리 관리를 했었습니다. 이를 MRC(Manual Reference Counting)라고 칭해요! 간단히 retain과 release에대해서 설명해보자면 아래와 같습니다 ..
1. Switch case 구문 Switch 구문은 앞에서 다룬 if 와 guard 처럼 분기문의 일종이지만, 처리 방식은 앞에서와 다릅니다. switch 구문은 입력받은 값을 조건식 여부가 아니라 패턴으로 비교하고 그 결과를 바탕으로 실행 블록을 결정하는 조건문입니다. Switch 구문 형태 switch [비교 대상] { case [비교 패턴1] : [비교 패턴1이 일치했을 때 실행할 구문] case [비교 패턴2], [비교 패턴3] : [비교 패턴2 또는 3이 일치했을 때 실행할 구문] default: [어느 비교 패턴과도 일치하지 않았을 때 실행할 구문] } Switch문 문법 각 상태는 키워드 case를 통해 나타낼 수 있습니다. case 상태 끝에 콜론 ':'을 붙여 패턴을 종료합니다. 하나의 ..
Struct C 언어 구조체 용도와 비슷하지만, 추가로 멤버 변수(프로퍼티), 함수(메소드) 정의 가능 상속이 불가능 확장(extention) 등 기능 사용 가능 값 타입 (= Value Type) Swift의 대부분의 큰 뼈대는 모두 구조체로 구성 메모리의 Stack 영역에 존재 값 타입이 뭐에요? 값 타입이란, 데이터의 크기가 고정적이기 때문에 메모리 스택에 생성되는 것을 말 합니다. 선언 : 선언만 하면 스택에 즉시 생성되므로 선언 직후부터 데이터를 저장하는 용도로 사용할 수 있습니다. 종료 : 더 이상 참조하는 변수가 없을 때 가비지 컬렉터에 의해 파괴됩니다. 데이터 : 복사에 의해 완전한 별개의 사본이 생성 되며 복사 후 사본과 원본은 별개의 변수 입니다. 즉, 완전히 다른 두 개의 변수가 생성..
Class 프로퍼티(클래스 안의 변수)와 메소드(클래스 안의 함수)를 가질 수 있는 컨테이너 타입을 정의하기위한 용도 일반적으로 단일 상속이 가능하지만, 프로토콜을 사용하면 다중 상속도 가능 참조타입 (=reference type) (call by reference) 형 변환(Type Casting)과 관련된 기능과 파괴자(Deinitializer)등의 기능을 가질 수 있다. iOS 프레임 워크의 대부분의 큰 뼈대는 모두 클래스로 구성 메모리의 Heap 영역에 존재 속성 (property) : 클래스에서 제공되는 변수 메소드 (method) : 클래스에서 제공되는 함수 참조 타입이 뭐에요? 참조 타입이란, 데이터의 크기가 크고 가변적이여서 동적으로 관리 되는 메모리의 힙에 생성되는 것을 말 합니다. 선언..
전달인자로 함수를 전달 받거나 함수 실행의 결과를 함수로 반환하는 함수 > map numbers의 각 요소를 2배하여 새로운 배열 반환 //MARK: - map let numbers: [Int] = [0, 1, 2, 3, 4] var doubledNumbers: [Int] var strings: [String] //MARK: for 구문 사용 doubledNumbers = [Int]() strings = [String]() for number in numbers { doubledNumbers.append(number * 2) strings.append("\(number)") } print(doubledNumbers) //[0,2,4,6,8] print(strings) // ["0","1","2","3",..
Error 프로토콜과 (주로) 열거형을 통해서 오류를 표현 > 오류 처리 문법 enum 오류종류이름: Error { case 종류1 case 종류2 case 종류3 //... } // 자판기 동작 오류의 종류를 표현한 VendingMachineError 열거형 enum VendingMachineError: Error { case invalidInput case insufficientFunds(moneyNeeded: Int) case outOfStock } > 함수에서 발생한 오류 던지기 자판기 동작 도중 발생한 오류 던지기 오류 발생의 여지가 있는 메서드는 throws를 사용하여 오류를 내포하는 함수임을 표시합니다. class VendingMachine { let itemPrice: Int = 100 v..
안녕하세요!! 오늘은 Extension에대해 공부해보도록하겠습니다!! 이 글은 Swift 공식문서 The Swift 5.5 Language Guide - The Basic과 꼼꼼한 재은씨의 Swift : 문법편을 참고하여 작성하였습니다. Extensions Extensions을 해석하면 '확장' 이죠?? 단어 뜻처럼 익스텐션(Extensions)은 이미 존재하는 클래스나 구조체, 열거형 객체 혹은 프로토콜 타입에 새로운 기능을 추가하여 확장해주는 구문입니다. retroactive modeling으로 알려진 것과 같이 원본 코드를 몰라도 그 타입에 대한 기능을 확장할 수 있습니다. 익스텐션은 Objective-C의 카테고리와 유사하다고 합니다! 스위프트에서 익스텐션을 통해 구현할 수 있는 것 1. 새로운 ..
안녕하세요 :) 오늘은 프로토콜에대해 알아보도록 하겠습니다! 해당 포스팅은 꼼꼼한 재은씨의 Swift : 문법편을 참고하여 작성하였습니다. 프로토콜은 오브젝티브-C에서도 쓰였던 개념으로, 클래스나 구조체가 어떤 기준을 만족하거나 또는 특수한 목적을 달성하기 위해 구현해야하는 메소드와 프로퍼티 목록입니다. 프로토콜의 대표적인 기능은 다음과 같습니다. 1. 구조체나 클래스를 구현하는 과정에서도 프로토콜을 사용하여 구현할 메소드의 형식을 공통으로 정의할 수 있다 2. 프로토콜을 구현한 객체의 메소드나 속성을 은닉하고 프로토콜에서 선언된 명세의 내용만 제공하는 기능 한마디로 "특정 기능이나 속성에 대한 설계도" 라고 할 수 있습니다. 그럼 이제 프로토콜에 대해서 자세히 알아볼까요? Protocol 프로토콜을 특..