Swift/swift 문법
-
[Swift] Computed Property - get/setSwift/swift 문법 2024. 1. 3. 09:32
복잡하게 생각할 거 없이, 해당 프로퍼티의 값을 호출하는지. 설정하는지만 보면 된다. get 이 프로퍼티의 값을 호출할 때 실행되는 코드 값을 가져와야 하므로 return이 필수. set 이 프로퍼티의 값을 설정할때(할당) 할 때 실행되는 코드 class Person { var name: String = "ming" var alias: String { get { //alias의 값을 가져오면(print(min.alias)) 실행되는 부분 return name } set(name) { //alias의 값을 설정하면(min.alias = "min") 실행되는 부분 self.name = name print("\(name)은 민2") } } } var min = Person() print(min.alias) /..
-
swift 클로저 - 캡처리스트 (:클래스에서의 사용)Swift/swift 문법 2023. 9. 6. 00:01
클로저는 참조타입이다. 클로저 내부에서 외부의 값을 불러올 때 '캡쳐현상'이 발생한다. 이떄 클로저 안에서 이용되는 외부의 변수를 캡쳐리스트 안에 넣어줄 수 있다. 캡쳐 리스트를 써서 대상을 캡쳐할 수 있는데, 캡쳐한 대상의 타입에 따라 그 방법이 달라진다. 캡처된 대상 캡쳐리스트 유무 결과 구조체 캡처리스트를 쓰지 않은경우 외부 값이 변하면 같이 변한다 캡처리스트를 쓴 경우 외부 값이 변해도 변하지 않음 값 캡처리스트를 쓰지 않은경우 주소값 복사 캡처리스트를 쓴 경우 주소값 복사 (RC를 올려서 메모리에서 해제될 가능성을 방지) 이중 값 타입의 코드 예시 // 클래스의 캡처리스트 class SomeClass { var num = 1 deinit{ print("메모리에서 해제되었습니다.") } } var..
-
열거형 - 연관값, 열거형Swift/swift 문법 2023. 6. 5. 16:15
타입 -> basic type과 custom type으로 나뉨. custom type -> 개발자가 마음대로 만들어서 쓸 수 있는 타입 (열거형, 클래스, 구조체) 열거형: 타입 자체를 한정된 사례 안에서 정의할 수 있는 타입 - 코드의 가독성과 안정성이 높아짐 -> 명확한 분기 처리 가능 연관값 (Associated Values) -> 열거형의 각 case에 custom type의 구체적인 추가적인 정보를 저장함 : 키테고리를 만들고 해당하는 값을 저장한다. enum Barcode { case upc(Int, Int, Int, Int) case qrCode(String) } var productBarcode = Barcode.upc(8, 85909, 51226, 3) switch productBarco..
-
as 연산자 / is 연산자Swift/swift 문법 2023. 5. 26. 19:36
상속은 필요한 데이터를 추가하는 메모리 구조 undergraduate 타입은 person을 상속받는다. 메모리 구조 -> person에서 undergraduate의 프로퍼티가 추가된다. is 연산자 : 특정 타입이 맞는지 확인한다. 반환값: Bool type as 연산자 : 인스턴스 타입의 힌트를 변경하는 연산자. 다운캐스팅에 성공할 경우, 접근가능한 항목(상속받은 클래스의 프로퍼티)의 수를 늘려준다. let person: Person = Undergraduate() -> Person: 변수에 정의된 타입 Undergraduate: 실제 메모리 공간의 인스턴스 Person type보다 Undergraduate type 항목의 개수가 더 많다. 하지만 현재 Person type으로 person변수에는 정의..
-
Protocol의 메모리 주소와 프로토콜의 확장 구현시 실행 메서드Swift/swift 문법 2023. 5. 13. 20:58
:Protocol은 자격증 -> 어떤 구조체나 클래스도 채택 가능하다. 테이블과 메서드 주소가 정해져있지 않고, 채택해서 구현할 때 테이블이 만들어진다. 클래스에서 직접 구현한 메서드는 확장에서 구현한 메서드보다 우선순위가 생긴다. protocol Remote{ func turnOn() func turnOff() } extension Remote { func turnOn() {print("리모컨 켜기")} func turnOff() {print("리모컨 끄기")} func doAnother() { print("리모컨 다른 동작") } } struct LgTv:Remote { func turnOn() {print("TV 켜기")} func turnOff() {print("TV 끄기")} func doAno..
-
문자열: 출력 형식 지정자Swift/swift 문법 2023. 5. 8. 23:10
String(format: String, arguments: CVar) -> String()은 생성자다. (타입 변환 X) String(format: "%.4f", str) -> 소수 4번째 자리까지 반환. String(format: "%03d", str) %d -> 정수 -> 소수 3번째 자리까지 반환. (앞에 0 포함) String(format: "value: %@", str) @ -> 이 자리에 문자열을 넣을 것이다. 세자리수마다 콤마 넣기 numberFormatter.numberStyle = .decimal numberFormatter.string(for: price)