isKindOfClass는 해당 클래스의 인스턴스인지 또는 해당 클래스에서 상속된 클래스 인스턴스인지 확인할 때 사용합니다. YES, NO인 부울 값을 리턴해줍니다. 아래와 같이 선언되어 있습니다. - (BOOL)isKindOfClass:(Class)aClass; 파라미터 aClass는 검사할 Objective-C 클래스를 나타내는 클래스 오브젝트입니다. aClass 해당 클래스이거나 상속받은 클래스 인스턴스면 YES를 리턴하고, 아니면 NO를 리턴합니다. 예를 들어서 아래의 코드는 YES를 리턴합니다. Foundation에서 NSArchiver클래스는 NSCoder을 상속받기 때문입니다. NSMutableData *myData = [NSMutableData dataWithCapacity:30]; id ..
Result타입은 스위프트 5.0에서 발표한 내용입니다. 특히 비동기 API에서의 결과 처리에 대한 복잡함을 간단하고 명확하게 만들어주고 쉽게 에러를 핸들링할 수 있도록 해줘요. Result는 enum으로 선언되어 있으며, success와 failure로 두개의 케이스가 존재합니다. (벌써 명확함이 느껴지기 시작) Result타입은 성공인지 실패인지 나타내는 값입니다. 첫 번째 줄 우측을 보시면 where으로 조건이 선언되어 있습니다. Failure은 스위프트의 Error타입을 준수해야 합니다. 아래는 URLSession에 사용된 예시입니다. 네트워킹을 통해 데이터를 받거나 에러를 받을 수 있습니다. let task = URLSession.shared.dataTask(with: url) { data, r..
lazy프로퍼티는 직접 사용할 때까지 계산되지 않습니다. sean allen님의 예제가 잘 표현되어 있어서 참고했습니다. 잘 표현된 예제 한번 보시죠. Player구조체가 있으며 name, team, position프로퍼티가 있고 lazy프로퍼티로 introduction이 있습니다. struct Player { var name: String var team: String var position: String lazy var introduction = { return "Now entering the game: \(name), \(position) for the \(team)" }() } var jordan = Player(name: "Michael Jordan", team: "Bulls", position..
프로젝트를 생성할 때 User Interface를 SwiftUI로 지정하면 ContentView가 생성됩니다. ContentView.swift를 살펴보면 View를 상속받은 ContentView구조체가 있습니다. 앱이 시작되면, 윈도우는 ContentView.swift에 정의된 ContentView의 인스턴스를 보여줍니다. 그리고 아래에는 PreviewProvider을 상속받은 ContentView_Previews구조체가 있습니다. PreviewProvider은 엑스코드에서 뷰 미리보기를 제공하는 타입 프로토콜입니다. 만약에 이 코드가 없다면 당연히 캔버에는 아무것도 나타나지 않습니다. 디폴트로 제공하는 프리뷰 구조체를 수정해보면 더 나은 프리뷰를 이용할 수 있습니다. 다크 모드로 사용하려면 아래와 같이..
key path는 프로퍼티에 대한 read - only 접근을 제공합니다. key path를 사용하는 방법은 \ 시작으로 베이스 타입을 쓰고 프로퍼티명을 작성합니다. (Root) -> Value를 \Root.value로 사용할 수 있는 기능이다. 예를 들어서 User타입이 있고 안에는 4개의 프로퍼티가 정의되어 있다고 가정합시다. struct User { let name: String let age: Int let bestFriend: String? var canVote: Bool { age >= 18 } } 우리는 구조체의 인스턴스를 생성하고 그것을 배열에 넣을 수 있습니다. let eric = User(name: "Eric Effiong", age: 18, bestFriend: "Otis Milbur..
Combine 프레임워크는 A declarative Swift API for processing values over time을 제공한다고 설명한다. 많이들 (declarative) 선언형 프로그래밍과 (imperative) 명령형 프로그래밍을 말한다. Imperative Programming vs Declarative Programming 둘은 상반되는 프로그래밍 개념이다. HOW 명령형 프로그래밍 프로그래밍의 상태와 상태를 변경시키는 구문의 관점에서 연산을 설명하는 프로그래밍 패러다임의 일종이다. 자연 언어에서의 명령법이 어떤 동작을 할 것인지를 명령으로 표현하듯이, 명령형 프로그램은 컴퓨터가 수행할 명령들을 순서대로 써 놓은 것이다. 예를 들어 C#, C++ 및 Java와 같은 언어는 명령형 프로그..
첫 시작 먼저 오브젝티브 씨는 씨언어가 확장된 언어입니다. 씨언어를 대학교 1학년 때 배웠던 경험이 있어서 엄청 낯설지는 않네요. 먼저 프로젝트를 생성해줍니다. 연습을 목적으로 프로젝트를 생성하는 것이니 command line tool으로 생성해주겠습니다. 다음 프로젝트 이름을 작성해줍니다. 항상 언어를 스위프트로 작성했는데 오늘은 옵젝씨로 변경해줍니다. 프로젝트가 저장될 곳을 선택한 후 프로젝트 생성 완료. 가장 다른 점은 main.m이라는 파일이 있습니다. 스위프트에서도 프로젝트를 생성하면 main은 생성되는데 .m은 과연 무엇인지 알아보겠습니다. 아까 옵젝씨는 씨언어를 확장한 언어라고 했는데 main이 바로 그 진입 지점입니다. 파일의 구조의 첫 줄을 살펴봅시다. 이 부분은 헤더 파일을 읽는 부분입..
문자열을 결합하는 방법은 문자열 보간을 사용하는 방법과 +를 사용해 문자열을 결합하는 방법이 있습니다. 먼저 문자열 보간은 문자열 안에 변수와 상수를 결합하는 것입니다. 사용하는 방법은 아래와 같이 \( ) 백 슬래시, 열린 괄호, 닫는 괄호를 사용합니다. var name = "Ellie" "My name is \(name)" 그리고 다른 방법으로는 +를 사용해 문자열을 결합하는 방법입니다. var name = "Ellie" "My name is " + name 위와 같이 문자열을 결합할 수 있지만 문자열 보간이 더 효율적인 상황이 있습니다. 바로 여러 변수를 함께 결합해서 사용하는 경우입니다. 스위프트의 문자열 보간은 다양한 데이터 타입을 자동으로 처리할 수 있습니다. var name = "Ellie"..
- Total
- Today
- Yesterday
- 애니메이션
- 스위프트
- 책 후기
- RX
- 문자열
- ios
- objective-c
- SWIFT
- Animation
- stanford SwiftUI
- 책
- ReactiveX
- wwdc
- Algorithm
- 머신러닝
- Xcode
- 딥러닝
- rxswift
- objc
- ARC
- swift5
- 책 추천
- 독서
- Deep learning
- swiftUI
- iOS SwiftUI
- leetcode
- 스위프트UI
- 알고리즘
- string
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |