본문 바로가기

전체 글

(34)
[Swift] ARC ARC ARC는 iOS 면접 단골 질문입니다. 참조 타입과 HEAP swif의 힙에 메모리는 인스턴스, 클로저 등등 참조 타입은 자동으로 힙에 할당한다. 지금 까지 우리는 자동으로 할당하여 쓰고 있었음 class Man { var name: String? var age: Int? init(name: String?, age: Int?) { self.name = name self.age = age } } let a = Man(name: "ssss", age: 19) 스택 → 힙 힙영역 Man instance name = ssss age = 19 스택 a 지역 변수 a에 스택이 할당되고 실제 Man은 힙에 저장됨 스택에 있는 a는 힙 영역에 인스턴스를 참조하고 a 안에 힙에 할당된 인스턴스의 주소값이 있습니다..
[Swift] 프로퍼티 프로퍼티 프로퍼티는 클래스. 구조체, 열거형과 관련한 값입니다. 프로퍼티의 종류에는 저장 프로퍼티와 계산된 프로퍼티가 있습니다. 저장 프로퍼티는 값을 저장해 주는 프로퍼티이고 계산 프로퍼티는 계산된 프로퍼티의 값을 저장하지 않고 특정하게 계산한 값을 반환해 주는 프로퍼티입니다. 계산 프로퍼티는 클래스, 주조체, 열거형 모두에서 사용가능하지만, 저장프로퍼티는 클래스와 구조체에서만 사용할 수 있습니다. 저장 프로퍼티? 값을 저장하고 있는 프로퍼티 let 키워드를 이용해서 상수 혹은 var 키워드를 이용해서 변수로 선언할 수 있습니다. 상수 구조체 인스턴스의 저장 프로퍼티 구조체를 상수로 선언하면 구조체 인스턴스의 프로퍼티를 변경할 수 없습니다. 구조체를 let으로 선언하면 프로퍼티를 변경할 수 없습니다. 구..
[Swift] 클로저 클로저 클로저는 코드블럭으로 C와 Objective-C의 블럭과 다른 언어의 람다와 매우 많이 비슷합니다. 클로저는 어떤 상수나 변수의 참조를 캡쳐해 저장할 수 있습니다. swift는 이 캡쳐와 관련한 모든 메모리를 알아서 처리합니다. 전역 함수: 이름이 있고 어떤 값도 캡쳐하지 않는 클로저 중첩 함수: 이름이 있고 관련한 함수로 값을 캡쳐 할 수 있는 클로저 클로저 표현: 문맥으로 부터 값을 캡쳐할 수 있는 이름이 없는 클로저 클로저 문맥에서 표현은 인자 타입과 반환 타입의 추론 단일 표현 클로저에서의 암시적 반환 축약된 인자 이름 후위 클로저 문법 클로저 표현 클로저 표현은 코드의 명확성과 의도를 잃지 않으면서도 문법을 축향해 사용할 수 있는 다양한 문법의 최적화 방법을 제공합니다 클로저 표현 문법 ..
[Swift] 함수 함수 Swift의 함수는 기본적으로 1. 함수이름, 2. 매개변수, 반환타입을 사용하여 함수를 정의합니다 //매개변수란 = 함수를 호출할 때 인수로 전달된 값을 함수 내부에서 사용할 수 있게 해주는 변수입니다. //반환타입이란 = 원하는 타입을 받는 것 func 함수이름(매개변수...) -> 반환 타입 { 실행 구문 return 반환 값 }swift에서 원하는 타입을 받기 위해서는 →를 사용합니다 func printName() { print("my name") } printName()함수에는 매개변수와 반환타입이 없어도 사용가능 합니다 func printName(age: Int, Name: String) { print("my age is \\(age) and my name is \\(Name)") } p..
[Swift] 흐름 제어 흐름 제어 if 스위프트도 조건문이 있습니다 let first: Int = 3 let second: Int = 1 if(first > second){ print("\\(first) > \\(second)") }else if(first IntNu..
[Swift] 데이터 타입 Boolean 불이라고도 하고 불리언이라고도 부른다 true, false의 단일 값을 가진다. if나 swiftch에서 주로 사용한다. Sendable을 상속받고 있습니다. int.type과 같이 암시적으로 프로토콜을 준수합니다. //근본(지정) let a: Bool = true let b: Bool = false //근본(선언) let a: Bool? //이럴 경우 any 타입으로 인식후 값을 자동 저장 let a = 10 > 12 // a = false 저장 let b = 10 && 10 // b == true 저장 if문 사용 예제 let a = true if a == true { print("true") } else { print("false") } Int, UInt Int는 +,- 정수를 담을 ..
[구조 패턴] Facade 퍼사드 패턴이란? 퍼사드는 클래스 라이브러리 같은 어떤 소프트웨어의 다른 커다란 코드 부분에 대한 간략화된 인터페이스를 제공하는 객체이다. 퍼사드 패턴은 다양한 인스턴스들을 하나씩 직접 소유하여 사용하지 않고, 인스턴스들이 협력하는 과정을 간략화된 인터페이스를 통해 제공하는 패턴입니다. 복잡한 퍼사드 뒤로 숨기고 퍼사드를 통해 간접 호출을 하는 것입니다. 즉 라이브러리, 프레임워크에 대한 또는 다른 클래스들의 복잡한 집합에 대한 단순화된 인터페이스를 제공하는 구조적 디자인 패턴입니다. 퍼사드 패턴의 어원 퍼사드 패턴은 "건물의 정면을 의미한다" 퍼사드 패턴을 언제 사용하면 좋을까? 객체 지향 프로그래밍 분야에 자주 사용한다. 주로 퍼사드 패턴은 언제 사용하면 좋을까? 퍼사드 패턴은 여러 인스턴스를 소유하..
[Swift] 프로퍼티 프로퍼티는 클래스. 구조체, 열거형과 관련한 값입니다. 프로퍼티의 종류에는 저장 프로퍼티와 계산된 프로퍼티가 있습니다. 저장 프로퍼티는 값을 저장해 주는 프로퍼티이고 계산 프로퍼티는 계산된 프로퍼티의 값을 저장하지 않고 특정하게 계산한 값을 반환해 주는 프로퍼티입니다. 계산 프로퍼티는 클래스, 주조체, 열거형 모두에서 사용가능하지만, 저장프로퍼티는 클래스와 구조체에서만 사용할 수 있습니다. 저장 프로퍼티? 값을 저장하고 있는 프로퍼티 let 키워드를 이용해서 상수 혹은 var 키워드를 이용해서 변수로 선언할 수 있습니다. 상수 구조체 인스턴스의 저장 프로퍼티 구조체를 상수로 선언하면 구조체 인스턴스의 프로퍼티를 변경할 수 없습니다. 구조체를 let으로 선언하면 프로퍼티를 변경할 수 없습니다. 구조체가 아..