일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 테스크
- 알고리즘
- 차이
- 해시
- 스위프트
- 서브스크립트
- async
- 프래그먼트
- View
- 리스트뷰
- 이스케이핑
- 연산자
- 풀이
- concurrency
- 프로그래머스
- weak
- 구조체
- 안드로이드
- Self
- rx
- Swift
- 자바
- RxSwift
- observable
- Subject
- ios
- 생명주기
- 클로저
- 백준
- 옵셔널
- Today
- Total
목록전체 글 (177)
study record
프로퍼티 프로퍼티는 크게 저장 프로퍼티와 연산 프로퍼티, 타입 프로퍼티로 나눌 수 있다. 저장 프로퍼티는 인스턴스의 변수 또는 상수를 의미한다. 구조체와 클래스에서만 사용할 수 있다. 연산 프로퍼티는 값을 저장한 것이 아니라 특정 연산을 실행한 결괏값을 의미한다. 클래스, 구조체, 열거형에서 쓰일 수 있다. 저장 프로퍼티와 연산 프로퍼티는 특정 타입의 인스턴스에 사용되는 것을 뜻하지만 특정 타입에 사용되는 프로퍼티가 있다. → 타입 프로퍼티 저장 프로퍼티 클래스 또는 구조체의 인스턴스와 연관된 값을 저장한다. 구조체는 프로퍼티에 맞는 이니셜라이저를 자동으로 제공한다. 전달인자로 초깃값을 넘긴다. 초깃값을 이미 할당했다면 넘길 필요는 없다. 클래스는 저장 프로퍼티에 초깃값을 지정하거나 사용자 정의 이니셜라..
비슷한 점 값을 저장하기 위해 프로퍼티를 정의한다. 기능 실행을 위해 메서드를 정의한다. 초기화될 때의 상태를 지정하기 위해 이니셜라이저를 정의할 수 있다. 다른 점 구조체는 상속할 수 없다. 타입캐스팅은 클래스의 인스턴스만 가능하다. 디이니셜라이저는 클래스의 인스턴스에만 활용할 수 있다. (디이니셜라이저란 클래스의 인스턴스가 참조할 필요가 없을 때 메모리에서 해제되기 전 호출되는 것이다. (deinit 메소드)) 참조 횟수 계산은 클래스의 인스턴스에만 적용된다. 가장 큰 차이점은 클래스는 참조타입, 구조체는 값 타입이라는 점이다. 값 타입과 참조 타입 두 타입의 큰 차이는 '무엇이 전달되느냐'이다. 함수의 전달인자가 값 타입일 때에는 전달될 값이 복사되어 전달된다. 전달인자가 참조타입일 때에는 복사하지..
구조체 구조체 정의 구조체는 struct 키워드로 정의한다. 구조체를 정의하는 것은 새로운 타입을 생성하는 것과 마찬가지이므로 이름을 대문자 카멜케이스를 사용하여 지어준다. 프로퍼티와 메서드는 소문자 카멜케이스를 사용하여 짓는다. struct BasicInformation { var name: String var age: Int } 구조체 인스턴스의 생성 및 초기화 var asongInfo: BasicInformation = BasicInformation(name: "asong", age: 99) asongInfo.age = 100 asongInfo.name = "yagom"
구조체와 클래스는 프로그래머가 데이터를 용도에 맞게 묶어 표현하고자 할 때 사용한다. 구조체와 클래스는 프로퍼티와 메서드를 사용하여 구조화된 데이터를 사용할 수 있다. 새로운 사용자 정의 데이터 타입을 만드는 것이다. 구조체와 클래스의 큰 차이점은 구조체의 인스턴스는 값 타입이고, 클래스의 인스턴스는 참조 타입이라는 것이다. 또한 클래스는 참조타입이다. 일부 프로그래밍 언어는 소스파일 하나에 구조체 또는 클래스 하나만 선언할 수 있으나, 스위프트는 소스파일 하나에 여러 개의 구조체와 여러 개의 클래스를 정의하고 구현해도 된다. 또한 구조체 안에 구조체, 클래스 안에 클래스와 같이 중첩 타입의 정의 및 선언이 가능하다.