SWIFT
-
상속 (Inheritance)Swift 2020. 12. 10. 03:23
클래스는 메소드, 프로퍼티와 다른 특징들을 다른 클래스로부터 상속할 수 있습니다. 기반 클래스 정의 (Defining a Base Class) 어떤 클래스도 상속받지 않은 클래스를 기반 클래스라고 합니다. 서브 클래싱 (Subclassing) 서브 클래싱을 하면 부모로부터 메소드와 프로퍼티 등을 상속받고, 자기 자신의 고유한 특성도 추가할 수 있습니다. class SomeChildClass: SomeParentClass{ } class Vehicle { var currentSpeed = 0.0 var description: String { return "traveling at \(currentSpeed) miles per hour" } func makeNoise() { // do nothing - an ..
-
메소드 (Methods)Swift 2020. 12. 8. 03:35
특정 타입의 클래스, 구조체, 열거형과 관련된 함수를 메소드라고 합니다. 예를 들어, String에는 hasPrefix가 있습니다. 특정 타입의 인스턴스에서 실행할 수 있는 메소드를 인스턴스 메소드, 특정 형과 관련된 메소드를 타입 메소드라고 합니다. Swift에서는 클래스 뿐만 아니라 구조체, 열거형에서도 메소드를 사용할 수 있습니다. 인스턴스 메소드 (Instance Methods) 인스턴스 메소드는 클래스, 구조체, 열거형의 인스턴스에 속한 메소드입니다. 이 메소드를 통해서 인스턴스 내의 값을 다룰 수 있습니다. 인스턴스 메소드는 해당 인스턴스에서만 실행이 가능합니다. class Counter { var cnt = 0 func increment { cnt += 1 } func increment(by..
-
클로저 (Closures)Swift 2020. 12. 5. 01:22
클로저 (Closure)는 코드 블록으로, 어떤 상수나 변수의 참조를 캡쳐해 저장합니다. Swift는 이 캡쳐와 관련한 모든 메모리를 알아서 처리합니다. 전역 함수(global functions)와 중첩 함수(nested function)은 실제 클로저의 특별한 경우입니다. 다음은 세 가지 형태의 클로저입니다. 전역 함수 : 이름이 있고 어떤 값도 캡쳐하지 않는 클로저 중첩 함수 : 이름이 있고 관련한 함수로부터 값을 캡쳐할 수 있는 클로저 클로저 표현 : 경량화된 문법이 쓰여지고 관련된 문액(context)로부터 값을 캡쳐할 수 있는 이름이 없는 클로저 클로저 표현은 문멕에서 파라미터 타입과 return 타입을 추론할 수 있고, 참조 타입입니다. 또한 후위 클로저 형식입니다. 클로저 표현 (Closur..
-
클래스와 구조체 (Classes and Structures)Swift 2020. 11. 10. 20:02
클래스와 구조체는 코드를 좀 더 조직화시키기 위해서 사용합니다. Swift는 다른 프로그래밍 언어와 다르게 interface파일과 imlementation파일을 분리해서 만들지 않아도 됩니다. 하나의 파일에 구조체나 클래스를 정의하면, Swif가 알아서 해당 클래스와 구조체를 사용할 수 있는 인터페이스를 생성해줍니다. 클래스와 구조체의 비교 (Comparing Classes and Structures) 공통점 - 값을 저장하기 위한 프로퍼티 정의 - 기능을 제공하기 위한 메서드 정의 - subscript 문법을 이용해 특정 값을 접근할 수 있음 - 초기 상태를 설정할 수 있는 initializer 정의 - 기능 확장 - 어떤 protocol을 따른다고 선언을 하였다면, protocol이 정한 규칙을 무조..
-
프로퍼티 (Properties)Swift 2020. 11. 10. 19:10
프로퍼티는 클래스, 구조체, 열거형과 관련한 값으로, 프로퍼티의 종류에는 저장 프로퍼티(Stored Properties)와 계산된 프로퍼티 (Computed Properties)가 있습니다. 저장 프로퍼티 : 저장 프로퍼티는 값을 저장하고 있는 프로퍼티를 의미하고, 계산된 프로퍼티 : 값을 저장하지 않고, 특정하게 계산한 값을 반환해주는 프로퍼티입니다. 계산된 프로퍼티는 클래스, 구조체, 열거형에서 사용 가능하지만 저장 프로퍼티는 클래스와 구조체에서만 사용 가능합니다. 저장 프로퍼티 (Stored Properties) 저장 프로퍼티는 일반적인 변수와 같습니다. 상수는 let 키워드를 사용하고, 변수는 var 키워드를 사용해 사용합니다. struct Number{ var one: Int var two: I..
-
열거형 (Enumerations)Swift 2020. 11. 5. 00:03
/* The Swift Language Guide (한국어)를 공부합니다. */ 열거형은 같은 특징을 가지는 값들을 하나의 그룹으로 관리하기 위한 개념입니다. 열거형을 사용하면 type-safety를 보장할 수 있습니다. ( type-safety란, 하나의 enum 그룹의 요소 외에는 사용할 수 없도록 하는 것입니다.) Swift에서는 C와 반대로 case값이 string, character, integer, floating 값을 사용할 수 있습니다. 열거형은 1급 클래스 형이기 때문에 computed properties(계산된 프로퍼티)를 제공하거나, 초기 선언을 확장해 사용할 수 있습니다. 열거형 문법 (Enumeration Syntax) enum키워드를 사용합니다. enum CompassPoint ..
-
Notification ExampleUIKit 2020. 8. 18. 01:04
navigation으로 새로운 화면을 띄울 때, full screen으로 띄우는 것이 아니라, 아래에서 위로 올라오는 방식으로 화면을 띄운다고 해보겠습니다. 이 때, save 버튼을 누르면 새로운 view에 작성한 내용이 이전 화면의 테이블 뷰에도 나타나게 하고 싶습니다. 만약 새로운 view를 띄우는 방식이 full screen이라면, viewWillAppear에서 tableView.reloadData()를 하면 되지만, 그렇지 않다면, 위의 방법이 통하지 않습니다. 이런 경우에는, Notification 개념을 이용하여서, save 버튼을 눌렀을 때, 테이블이 reload 되도록 합니다. 우선 변경됐다라고 신호를 보낼 View에서 extenstion으로 notification 이름부터 추가해줍니다. ..
-
Alert ControllerUIKit 2020. 8. 18. 00:33
alert의 모양은 총 두가지로, Alert View와 Action Sheet 가 있습니다. -> Action Sheet는 보통 여러 가지 선택지가 놓여져 있는 경우, 사용합니다. extension UIViewController{ func alert(title: String = "알림", message: String){ let alert = UIAlertController(title: title, message: message, preferredStyle: .alert) let okAction = UIAlertAction(title: "확인", style: .default, handler: nil) alert.addAction(okAction) present(alert, animated: true, co..
-
Date Formatter (원하는 모습으로 날짜 출력)UIKit 2020. 8. 17. 22:11
let formatter: DateFormatter = { let f = DateFormatter() f.dateStyle = .long f.timeStyle = .short f.locale = Locale(identifier: "Ko_kr") return f }() 클로저를 사용하여, formatter 변수를 만듦과 동시에 설정까지 해줍니다. 그리고나서 formatter.string(from: target.insertDate)를 추가하여 from의 변수를 위에서 설정한 모양대로 나오도록 해줍니다. 아래는 결과이미지입니다.
-
Notification CenterUIKit 2020. 7. 4. 18:32
Notification Center는 객체들이 서로 상호작용할 수 있도록 하는 방법입니다. 다시 말하면, 특정 객체가 Notification Center에 등록된 event를 발생시키면 해당 event를 처리할 것이라고 등록된 observer들이 event에 대한 행동을 취하는 것이 Notification 이 동작하는 방식입니다. keyboard를 예로 들자면 1. 먼저 event를 발생시키는 객체에서 event를 Notification Center에 등록합니다. 2. event를 실행할 객체에서 observer로 등록합니다. override func viewWillAppear(_ animated: Bool) { NotificationCenter.default.addObserver(self, select..