Swift
-
메모리 구조 & ARCSwift 2021. 1. 11. 17:56
안녕하세요. 그린입니다! 이번 포스팅에서는 메모리 구조와 ARC에 대해 알아보겠습니다..! 1. 메모리 구조 [메모리 구조 화면] 1) 코드 영역: 소스코드 기계어 형태 저장(0과 1), 컴파일 타입 결정, Read-Only 형태로 저장 2) 데이터 영역: 프로그램 시작 시 할당, 종료 시 메모리 해제, Read-Write로 지정 (실행 도중 값 변경될 수 있음) 3) 힙 영역 (1) 프로그래머가 할당/해제해주는 영역 (2) 메모리 해제 해주지 않으면 memory leak 발생 (동일 메모리 블록 중복 할당 방지 필요) - malloc, calloc 등 해제 기능 필요 (3) 런타임 시 결정되기에 데이터 크기 확실치 않을때 사용 (4) 클래스 인스턴스, 클로저 같은 참조 타입의 값은 모두 heap 영역에..
-
Concurrent ProgrammingSwift 2021. 1. 7. 19:13
안녕하세요. 그린입니다! 이번 포스팅에서는 Concurrent Programming(동시성 프로그래밍)이 무엇인지 그리고 어떻게 사용하는지에 대해 알아보려합니다. 우선, 동시성 프로그래밍을 알기전 전반적으로 알아봐야될 개념에 대해 이야기해보겠습니다. 1. Concurrent VS Parallelism -. Concurrent Programming(동시성 프로그래밍) : 여러 작업을 동시에 싱글 혹은 여러 코어(CPU)에서 나눠서 처리하는것이다. 싱글코어라면 시간 분할 방식을 이용하여 스레드를 서로 번갈아가며 제공하여 실제로 여러 프로그램을 돌리는것이 아니라 논리적인 관점에서 여러 작업들이 동시에 이뤄지는것처럼 보이게 하는 프로그래밍 (싱글코어 멀티스레딩 등..) -. Paralleism Programmi..
-
인스턴스 생성 및 소멸Swift 2020. 12. 28. 18:21
안녕하십니까. 그린입니다! 오늘 포스팅에서는 인스턴스의 생성 및 소멸에 관해 나눠보겠습니다. 지금까지 클래스나 구조체를 생성 시 이니셜라이저를 통해 기본적인 인스턴스를 생성했습니다. 초기화 되는 과정이죠. 그런데 이번 주제에서는 초기화 과정에서 초기값을 설정하고 소멸시키는걸 알아보겠습니다. 1. 인스턴스 생성 -. 이니셜라이저를 정의하여 초기화 과정을 통해 초기값을 직접 할당할 수 있습니다. 즉 이니셜라이저가 초기값을 지정하는 메서드입니다! -. init 키워드를 사용합니다. 클래스/구조체/열거형 함수 안 혹은 익스텐션으로 구현할 수 있습니다. (클래스에선 익스텐션으로 구현할 수 없습니다.) class TestClass { init() { //초기값 구현 } } 1-1) 프로퍼티 기본값 -. 클래스.구조..
-
JSON 데이터 다루기Swift 2020. 12. 23. 14:00
안녕하세요. 그린입니다! 이번 포스팅에서는 JSON 파일 데이터를 가져오고 파싱해서 사용하는 방법에 대해 포스팅해보겠습니다~! 우선 간단히 JSON이란 무엇인가 살펴보도록 하죠! [JSON] : JavaScript Object Notation의 약자로 키와 값 쌍으로 이뤄진 데이터 오브젝트를 전달하기 위해 텍스트를 사용한 개방형 표준 포맷 (key-value), value에는 모든 타입이 들어갈 수 있지만 보장되는 표현방식에는 문자열과 숫자만 들어갑니다. 컴퓨터는 어떠한 정해진 규칙을 가지고 정보를 전달한다. 기계어,XML,JSON 등이 정보전달 포맷입니다. JSON을 표현하는 방식에는 {}: 객체 (딕셔너리) []: 배열 “ “: 문자열 숫자 로 간단하게 데이터를 담을 수 있다. JSON을 Swift에..
-
고차함수와 함수형 프로그래밍Swift 2020. 12. 18. 12:10
안녕하세요. 그린입니다! 이번 포스팅에서는 고차함수와 함수형 프로그래밍에 대해 학습해보겠습니다. 고차함수.. 말만 들어도 어렵죠? 저는 처음 수학에 관한건가? 라는 생각이 들었어요 ^^; 자 그럼 고차함수부터 차근차근 알아보도록 하겠습니다! [고차함수] 고차함수는 파라미터나 반환값을 함수로 주고 받는 함수입니다. 고차함수를 활용한 대표적인 메서드는 map/filter/reduece가 있습니다. 고차함수를 잘 사용한다면 기존 반복/조건문들을 장황하게 짜는것보다 더 편하게 함수 내에서 구현이 가능합니다. 1) map: 컨테이너 내부 기존 데이터를 변형하여 새로운 컨테이너를 생성 data = numbers.map( { (number: Int) -> Int in return number * 2}) //파라미터,..
-
제네릭Swift 2020. 12. 13. 16:54
안녕하세요. 그린입니다! 이번 포스팅에서는 제네릭에 대해 알아보겠습니다. 제네릭은 스위프트 언어로 사용 할 수 있는 아주 중요한 기능입니다..!! 제네릭을 이용하면 코드의 중복을 줄여주고 구현한 기능/타입을 재사용할 수 있습니다 (한번만 구현하면 됩니다~!!) 1. 제네릭 선언 및 사용 -. 메서드 이름 뒤 () 기호를 붙여 표시 -> func generic (value: T) -> T { } func ++ (frontNumber: T, backNumber: T) -> T { return frontNumber + backNumber } * BinaryInteger 프로토콜로 타입을 좀 더 명확히 주어 정수 타입 모두 해당 될 수 있도록 설정 2. 제네릭 함수 -. 함수 메서드를 제네릭으로 선언하면 위에서..
-
프로토콜/구조체/클래스에 관하여Swift 2020. 11. 23. 17:27
안녕하세요. 그린입니다! 이번 포스팅에서는 제가 학습하며 나름대로 간단하게 헷갈리는 부분을 정리한것을 공유하겠습니다. 바로 프로토콜/구조체/클래스에 관하여 이야기를 해볼까 합니다..! 스위프트를 처음 접하며 공부하다보니 왜 다른 언어와 달리 프로토콜 지향이며 구조체가 중요한지 궁금했습니다. 아직 명확하게 해답을 찾은건 아니지만 어느정도 정리된 부분을 기재하였으니 만약 다른 사항이거나 의견이 있으시면 댓글 달아주시면 감사하겠습니다 :-) 1. 프로토콜 : 어떤 기능을 실행하기 위해 프로퍼티와 메서드 그리고 다른 기능들의 틀이다. 우선 스위프트는 객체 지향이면서 프로토콜 지향 언어이기도 하다. 스위프트의 대부분은 기본 타입이 구조체로 구현되어있다. 클래스는 상속을 받아 구현되지만 구조체는 상속이 되지 않는데..
-
접근레벨 및 이니셜라이저 관련Swift 2020. 11. 19. 15:36
안녕하세요. 그린입니다! 이번 포스팅에서는 현재 학습하다가 생각난점을 정리해보도록 하겠습니다. 제 생각을 정리한 부분으로 다소 다르거나 맞지 않을 수 있으니 그런점 있으시면 알려주세요~!! 1. 접근레벨 swift에서는 기본적으로 5가지의 접근레벨이 있습니다. 1) private : 가장 제한적으로 접근할 수 있는 범위는 해당 정의된 메서드 내에서 가능합니다. 즉 해당 중괄호 안에서만 접근할 수 있습니다. 2) fileprivate : private 다음으로 제한적이지만 해당 스위프트 파일에서만 접근이 가능합니다. 3) internal : 기본적인 접근레벨로 접근레벨을 앞에 붙여서 설정하지 않고 생략한다면 다 internal입니다. 내부 소스파일에서 접근 가능합니다. 4) public : 외부모듈에서도 ..