본문 바로가기

전체 글

(54)
[swift] 클로저 (closure) 클로저 (closure) 클로저는 실행가능한 코드 블럭을 말한다. (함수도 클로저의 일종) 이름을 정의할 필요가 없고, 매개변수와 리턴 값이 존재한다. (이름이 있는 클로저가 함수!) 일급 객체이다. ➡️ 변수, 상수로 저장, 전달인자로 전달 가능 { (매개변수 목록) -> 반환타입 in 실행 코드 } // 매개 변수가 필요하지 않다면? { () -> 반환타입 in 실행 코드 } // 함수를 사용할 경우 func sumFunction(a: Int, b: Int) -> Int { return a + b } var sumResult: Int = sumFunction(a: 1, b: 2) print(sumResult) // 클로저를 사용할 경우 var sum: (Int, Int) -> Int = { (a: I..
[swift] 값 타입 vs 참조 타입 swift의 Class 단일 상속 가능 (다중 상속 불가) 참조 타입 (데이터를 전달할 때 값의 메모리 위치를 전달한다) Apple 프레임워크의 대부분의 뼈대는 모두 클래스로 구성되어 있다. swift의 struct 다른 언어의 구조체들보다 다양한 기능을 가지고 있다. 상속 불가 값 타입 (데이터를 전달할 때 값을 복사해서 전달) swift의 대부분 큰 뼈대는 모두 구조체로 구성되어 있다. swift의 enum 다른 언어의 열거형과는 다른 존재 상속 불가 값 타입 열거형 자체가 하나의 데이터 타입이다. 열거형의 case 하나하나 전부 하나의 유의미한 값으로 취급한다. 구조체는 언제 사용하나? 연관된 몇몇의 값을 모아서 하나의 데이터 타입으로 표현하고 싶을 때 다른 객체, 함수로 전달되는 상황에서 참조가 ..
[swift] 열거형 (enum) 열거형 (enum) swift의 열거형은 각각의 case가 고유의 값으로 취급이 된다. enum 자체가 하나의 타입이므로, 대문자 카멜케이스로 이름을 정의해야 한다. 각 case는 소문자 카멜케이스를 사용함. 각 case는 한 줄에 한 개, 여러 개 등 마음대로 정의할 수 있다. enum 이름 { case 이름1 case 이름2 case 이름3, 이름4, 이름5 // 한 줄에 여러 개 정의 가능 } // 예제 enum BoostCamp { case iosCamp case androidCamp case webCamp } enum Weekday { case mon case tue case wed case thu, fri, sat, sun } // 열거형 타입과 케이스를 모두 사용하여도 됩니다 var day:..
[swift] 클래스(class) 클래스 (class) 구조체는 값 타입인 반면에, 클래스는 참조 타입이다. swift의 클래스는 다중 상속이 되지 않는다. class Sample { var mutableProperty: Int = 100 // 가변 프로퍼티 let immutableProperty: Int = 100 // 불변 프로퍼티 static var typeProperty: Int = 100 // 타입 프로퍼티 func instanceMethod() { // 인스턴스 메소드 print("instance method") } // 타입 메서드 static func typeMethod() { // 상속시 재정의 불가 타입 메서드 - static print("type method - static") } class func classMeth..
[swift] 구조체 (struct) 구조체 (struct) 스위프트의 대부분의 타입은 구조체로 이루어져 있고, 구조체는 값 타입이다. (함수는 참조 타입!) 프로퍼티 : 타입 안에 들어가는 변수 메소드 : 타입 안에 들어가는 함수 struct Sample { var mutableProperty: Int = 100 // 가변 프로퍼티 let immutableProperty: Int = 100 // 불변 프로퍼티 // 이 두 개는 인스턴스 프로퍼티 static var typeProperty: Int = 100 // 타입 프로퍼티 func instanceMethod() { // 인스턴스 메소드 print("instance method") } static func typeMethod() { // 타입 메소드 print("type method") ..
[iOS] JSON 파일 다루기 인코딩 (Encoding) : 정보의 형태나 형식을 표준화, 처리 속도 향상 등을 위해 다른 형태나 형식으로 변환하는 처리 디코딩 (Decoding) : 인코딩한 정보를 다시 기존의 형태로 변환하는 처리 (인코딩의 반대) Codable 스위프트는 스위프트의 인스턴스를 다른 형태로 변환하고 그 반대의 역할을 수행하는 방법을 제공한다. Encodable 프로토콜은 스위프트 타입의 인스턴스를 인코딩할 수 있는 프로토콜이고, Decodable 프로토콜은 스위프트 타입의 인스턴스로 디코딩할 수 있는 프로토콜이다. 그리고 Codable은 Encodable과 Decodable을 합한 타입을 말한다. JSON 파일을 변환할 때 유용하게 인코딩, 디코딩할 수 있다. Codable 인스턴스를 다른 데이터 형식으로 변환하고..
[iOS] NotificationCenter Notification 등록된 노티피케이션에 노티피케이션 센터를 통해 정보를 전달하기 위한 구조체이다. 주요 프로퍼티 var name: Notification.name // 알림을 식별하는 태그 var object: Any? // sender가 옵저버에 보내고자 하는 객체. 주로 sender 객체를 전달하는 데 쓰임 var userInfo: [AnyHashable: Any]? // 노티피케이션과 관련된 값 또는 객체의 저장소 특정 행동으로 인해 작업이 시작되거나 완료되는 시점에 다른 인스턴스로 노티피케이션 발생 시, 필요한 데이터를 같이 넘겨줄 수 있다. ex. 네트워킹 시작 및 완료되는 시점. 음악 및 동영상 재생이 끝나는 시점 NotificationCenter 등록된 옵저버에게 동시에 노티피케이션을 ..
[iOS] CMTime CMTime A struct representing a time value such as a timestamp or duration. timestamp, duration과 같은 값을 나타내는 구조체 CMTime은 보통 이런 형태로 초기화한다. init(value: CMTimeValue, timescale: CMTimeScale) CMTimeValue : Int64 (분자) CMTimeScale: Int32 (분모) 즉, CMTime(value: 100, timescale: 1) 이라면 100초를 나타내는 것이다.