본문 바로가기

⌨️ Language37

[Swift] 클래스와 구조체 클래스 VS 구조체공통점값을 저장하기 위한 프로퍼티 정의기능을 제공하기 위한 메소드 정의 subscript 문법을 이용해 특정 값을 접근할 수 있는 subscript 정의초기 상태를 설정할 수 있는 initializer 정의기본 구현에서 기능 확장특정한 종류의 표준 기능을 제공하기 위한 프로토콜 순응(conform)차이점(클래스만 가능)상속 (Inheritance): 클래스의 여러 속성을 다른 클래스에 물려 줌타입 캐스팅 (Type casting): 런타임에 클래스 인스턴스의 타입을 확인소멸자 (Deinitializers): 할당된 자원을 해제(free up) 시킴참조 카운트 (Reference counting): 클래스 인스턴스에 하나 이상의 참조가 가능구조체를 사용하는 경우주 목적이 관계된 간단한 값.. 2024. 3. 19.
[Swift] 클로저 클로저(Closures)어떤 상수나 변수의 참조를 캡처(값의 참조를 갖는다.)해 저장할 수 있는 코드 블럭Swift는 관련된 메모리를 알아서 처리 클로저의 형태전역 함수 : 이름이 있고 어떤 값도 캡처하지 않는 클로저중첩 함수 : 이름이 있고 관련한 함수(하위→상위)로 부터 값을 캡처 할 수 있는 클로저클로저 표현 : 경량화 된 문법으로 쓰여지고 관련된 문맥(context)으로부터 값을 캡쳐할 수 있는 이름이 없는 클로저 클로저 표현 (Closure Expressions)인라인 클로저를 명확하게 표현하는 방법으로 문법에 초점이 맞춰져있음코드의 명확성과 의도를 잃지 않으면서도 문법을 축약해 사용할 수 있는 다양한 문법의 최적화 방법을 제공 정렬 메소드(The Sorted Method)Swift 표준 라이브.. 2024. 3. 18.
[Swift] 예외 처리와 함수 1. 예외 처리오류 처리의 개념프로그램에 에러가 발생했을 때, 이를 감지하고 복구하는 프로세스모든 프로그램이 항상 원하는대로 정확히 동작한다는 보장이 없기 때문에 오류가 발생할 수 있음을 항상 고려해야 함guardguard 조건 else {조건이 거짓일 때 실행될 구문}// someValue 가 0이 아닐 경우에만 출력guard someValue != 0 else { return }print(someValue)조건들을 걸러낼 때 사용가독성을 위해 사용조건식에 이 함수가 수행하는데 필요한 조건을 그대로 적는다는 점에서 guard 구문이 코드를 분석할 때 가독성이 좋아짐func printMessage(_ message: String?) { if message == nil { return } print(.. 2024. 3. 17.
[Swift] 조건/반복문 1. 조건문조건문의 개념어떠한 값이 특정 조건에 해당할 때만 선택적으로 코드를 실행if-elseif 조건 { //조건이 만족되면 실행} else { //조건이 만족되지 않으면 실행}var a : String = "철수"var b : String = "짱구"var c : String = "맹구"if a == "철수" { print("정답!")}else { print("a는 \\(a)입니다.")}if b == "유리" { print("정답!")}else { print("b는 \\(b)입니다.")}// 정답!// b는 짱구입니다.var age : Int = 19var student : String = ""if age >= 8 && age else if 를 사용하면 다중 제어 가.. 2024. 3. 17.
[Swift] 콜렉션 타입 1. Array배열의 정의swift에서 가장 일반적으로 사용되는 자료구조 중 하나동일한 유형의 값의 순서가 있는 콜렉션 타입각 요소는 인덱스를 사용해 접근 가능배열의 선언과 초기화대괄호([]) 기호를 사용하여 빈 배열을 선언var numbers: [Int] = []var numbers = [Int]()대괄호([]) 안에 값을 쉼표로 구분하여 나열var numbers = [1, 2, 3, 4, 5]배열을 초기화 할 때, 타입 어노테이션(type annotation)을 사용하여 배열의 타입 지정 가능var numbers: [Int] = [1, 2, 3, 4, 5]Swift는 타입 추론(type inference)을 지원하기 때문에, 타입을 생략할 수 있음초기값을 기반으로 배열의 타입을 추론var number.. 2024. 3. 16.
[Swift] 변수와 프로퍼티2 * 2023년 Apple Developer Academy @ POSTECH 에서 swift 스터디를 하며 공부한 내용입니다 4. 필요성데이터 보존/관리데이터 저장변수는 데이터를 저장이를 통해 값을 기억하고 필요할 때 다시 사용데이터 조작변수는 저장된 데이터를 조작.ex-값을 증가시키거나 감소시키거나, 두 값을 더하거나 빼는 등의 작업을 수행데이터 전달변수는 프로그램 내에서 데이터를 전달ex-한 함수에서 다른 함수로 데이터를 전달하거나 뷰 컨트롤러에서 뷰로 데이터를 전달데이터를 보존하고 필요시에 참조하고 관리하기 위한것이 변수를 사용하는 가장 큰 목적주소로 모든 것을 관리하기 어렵기 때문에 주소는 운영체제가 관리하고 우리는 변수 이름만 가지고 관리하면 변수의 이름이 붙여진 공간을 운영체제가 알아서 찾아가서.. 2024. 3. 15.
[Swift] 변수와 프로퍼티1 * 2023년 Apple Developer Academy @ POSTECH 에서 swift 스터디를 하며 공부한 내용입니다 1. 변수/프로퍼티의 개념변수의 개념프로그램에서 데이터를 저장하는 메모리 공간이름, 형, 메모리 주소, 값, 영역 등으로 특성을 구분지어 볼 수 있음var number1 : Int = 20이름 = 변수를 구분하기 위해 사용 ⇒ number1고유 이름을 ‘식별자’(Identifier)’라고 함형 = 타입 = 데이터의 자료형 ⇒ Int값 = 변수에 들어가는 데이터 ⇒ 20영역 = 변수가 사용 가능한 범위 변수와 상수변수변할 수 있는 값을 저장var 변수명 : 데이터 타입 = 값데이터 타입은 생략 가능상수변하지 않는 일정한 값을 저장let 상수명 : 데이터 타입 = 값데이터 타입 생략 가.. 2024. 3. 15.
[Swift] Escaping Closure 이스케이핑 클로저(Escaping Closure)escaping 클로저는 클로저가 함수의 인자로 전달됐을 때, 함수의 실행이 종료된 후 실행되는 클로저파라미터 타입 앞에 @escaping 이라는 키워드를 명시해야 함이스케이핑 클로저에서는 self를 명시적으로 언급해야 함이스케이핑 클로저가 사용되는 예로는 비동기로 실행되는 HTTP Request CompletionHandler이 있음var completionHandlers: [() -> Void] = []func someFunctionWithEscapingClosure(completionHandler: @escaping () -> Void) { completionHandlers.append(completionHandler)} Non-Escaping .. 2023. 5. 20.
[Swift] 접근 제어 (Access Control) 접근 제어 (Access Control) 특정 코드의 접근을 다른 소스 파일이나 모듈에서 제한하는 것 모듈과 소스파일 Swift의 접근 제어는 모듈과 소스파일에 기반을 두고 있음 모듈은 코드를 배포하는 단일 단위로, 프레임워크나 앱이 이 단위로 배포되고 다른 모듈에서 import 키워드를 사용해 포함될 수 있음 소스파일은 모듈 안에 있는 소스파일을 의미 접근 레벨 Swift에서는 5개의 접근 레벨을 제공 Open 선언한 모듈이 아닌 다른 모듈에서 사용 가능 Public 선언한 모듈이 아닌 다른 모듈에서 접근이 가능 다른 모듈에서 오버라이드와 서브클래싱이 불가능 Internal Internal 기본 접근 레벨 File-Private 특정 엔티티가 선언한 파일 안에서만 사용 가능 Private Private.. 2023. 2. 7.
[Swift] ARC ARC (Automatic Reference Counting) 자동으로 메모리를 관리해 주는 방식 대부분의 경우에 개발자는 메모리 관리에 신경을 쓸 필요가 없음 ARC는 더 이상 필요하지 않은 클래스의 인스턴스를 메모리에서 해제하는 방식으로 동작 메모리 관리는 메모리 영역 중, 힙 영역과 관련 힙 영역은 참조(Reference) 형 타입인 클래스, 클로저 등이 보관 값(Value) 타입인 구조체, 열거형 등은 메모 리 관리 대상이 아님 힙 영역의 참조형 자료들이 프로그램 상에서 얼마나 참조되는지 숫자를 세어서, 메모리 가 자동으로 할당 및 제거하도록 관리하는 것 ARC 동작 ARC는 클래스 인스턴스를 생성하였을 때, 메모리를 할당 클래스 인스턴스가 더이 상 필요하지 않을 때, ARC는 해당 메모리를 해제.. 2023. 2. 7.
반응형