Swift) 값 타입과 참조 타입 그리고 클래스와 구조체 (Value type & Reference type, Class & Struct)
·
iOS/Swift
값 타입과 참조 타입 값 타입 변수를 할당하면 스택 영역에 값이 저장된다. 변수를 복사한 후 복사본을 변경하더라도 원본에 영향을 주지 않는다. 힙 영역을 사용하지 않고 레퍼런스 카운팅이 필요하지 않다. 참조 타입 스택 영역에는 포인터(레퍼런스)만 할당되고 실제 데이터는 힙 영역에서 할당된다. 변수를 복사하더라도 하나의 값을 가리키고 있기 때문에 복사본과 원본이 모두 같은 값을 갖는다. 변수를 복사하더라도 레퍼런스 카운트만 +1되고 실제 값이 복사되지는 않는다. Swift의 Class와 Struct는 생김새와 사용법이 유사하다. 구조체는 1. 값 타입이다. 2. 상속이 불가능하다. 3. 생성자를 구현하지 않아도 default initializer를 사용할 수 있다. struct Car { var name ..
객체지향과 상속
·
공부하기/다른 PL
흔히 객체지향 언어라고 하면 클래스를 떠올리지만, 객체지향 언어는 크게 클래스 기반 언어(ex: java, swift)와 프로토타입 기반 언어(ex : javascript)로 분류할 수 있다. 다음은 클래스 기반 객체지향 언어의 클래스와 객체 개념에 대한 글이다. 클래스는 '틀', 객체는 '실체' 자동차를 예로 들면 클래스는 자동차를 만드는 틀, 객체는 실제로 만들어진 자동차를 의미한다. 클래스는 속성(property)과 메소드로 구성된다. 아래 Car 클래스로 만들어진 자동차는 엔진, 바퀴, 차체 등의 속성을 가지고 있고 시동을 거는 기능, 브레이크를 밟는 기능을 메소드로 가지고 있다. Car 클래스 class Car { var engines : String //엔진 var wheels : String..
Swift 클로저와 일급 함수
·
iOS/Swift
일급 시민(함수 or 객체) 1. 변수나 데이터 구조(컬렉션) 안에 담을 수 있다. 2. 파라미터로 전달할 수 있다. 3. 리턴값으로 사용할 수 있다. Swift 클로저 let add: (Int, Int) -> Int = { (a: Int, b: Int) in return a + b } let res: Int = add(1, 2) print(res) // 3 swift의 함수는 일급함수가 아니다. swift의 클로저는 일급함수이다. 함수가 일급함수인 경우 : javascript, kotlin, python .. javascript는 함수를 변수 안에 담고, 리턴값으로 사용할 수 있다. function calculator(mode){ var options = { '+' : function(left, rig..