목록분류 전체보기 (166)
아요 개발 일기
Foundation Foundation은 원시 데이터 타입(String, Int, Double), 컬렉션 타입(Array, Dictionary, Set) 및 운영체제 서비스를 사용해 애플리케이션의 기본적인 기능을 관리하는 프레임워크 입니다. Foundation 프레임워크는 데이터 타입, 날짜 및 시간 계산, 필터 및 정렬, 네트워킹 등의 기본 기능을 제공합니다. Foundation 프레임워크에서 정의한 클래스, 프로토콜 및 데이터 타입은 iOS뿐만 아니라 macOS, watchOS, tvOS 등 모든 애플 SDK에서 사용됩니다. Foundation에서 제공하는 데이터 타입 및 컬렉션 타입의 대부분은 Objective-C 언어의 기능에서 지원하지 않는 것이기 때문에 언어기능을 보완하기 위한 구현이며, Sw..
안녕하세요 :) 저번에 ARC에대해 공부를 했었죠? 정말 좋은 ARC지만 강한 참조 순환 문제가 생길 수 있어요! 참조 순환이란, 어디에서도 참조가되지않는데도 메모리가 해제 되지 않는 경우를 말합니다 같이 해결 방법을 같이 알아볼까요?? 이 글은 Swift Language Guide 기반으로 작성되었습니다 ☺️ 강한 참조 순환이 발생하는 부분은 클래스와 클로저 두 가지에요! 클래스부터 알아봅시다 고고고구마 Strong Reference Cycles Between Class Instances 클래스 인스턴스간 강한 참조 순환 클래스 인스턴스간 강하게 상호 참조하는 경우에 강한 참조 순환이 발생하는데, 코드를 보면서 강한 참조 순환이 어떻게 발생하는지 알아봅시다! 위 코드를 보면 Person이라는 클래스는 ..
안녕하세요! 스위프트 공부하다보니, 메모리 구조에 대해 찾아보게 되었는데요! 메모리 구조에 대해서 잘 모르시는 분들은 [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..