실패 가능한 초기자 (Failable Initializers) 초기화 과정중 실패할 가능성이 있는 초기자를 init? 키워드를 사용해 표시할 수 있습니다. NOTE 실패가능 초기자는 반환값으로 옵셔널 값을 생성합니다. 초기화에 실패하는 부분에서 return nil 을 작성해 초기화가 실패했다는걸 나타내줍니다. 비록 초기화가 실패했을때 return nil 을 써주지만, 성공했을 경우엔 return 키워드를 사용하지 않습니다. 아래는 실패 가능 초기자 Int(exactly:)를 사용한 예제 입니다. 알고가자 Int(exactly:) - 소수점 값이 0이면 정수만 추출하고, 소수점 값이 있으면 nil을 출력합니다. ex) Int(exactly: 2.5) -> nil Int(exactly: 2.0) -> 2 ..
GCD Operation - 간단한 일 - 메소드 위주 사용하는 작업 - 복잡한 일 - 데이터와 기능을 캡슐화한 객체 취소 / 순서지정 / 일시정지 (상태추적) Operation • Single-Shot-Object 인스턴스화 → 작업을 한번만 실행가능하게 합니다 동일한 작업을 반복해야 하는 경우 매번 새로운 1인스턴스를 생성해야 합니다. • 기본적으로 sync(동기)로 실행합니다. • 동일한 작업을 반복해야 하는 경우 매번 새로운 인스턴스를 생성해야 합니다. Operation 의 고유기능 취소 순서지정 (의존성) 상태 체크 (state machine) KVO notifications Qos 수준 우선순위 고려 completionBlock 제공 completion closure 내장 사용방법 input,..
볼드체 label.font = UIFont.boldSystemFont(ofSize: 16) // or label.font = UIFont(name:"HelveticaNeue-Bold", size: 16.0) numberOfLines (줄바꿈) label.numberOfLines = 2 // 글이 화면을 넘어가면 자동으로 아래로 내려서 '2줄까지' 보여줌 label.numberOfLines = 0 // 글이 끝날때 까지 자동으로 아래로 내려서 보여줌 lineBreakMode (줄임표) .byTruncatingTail ⭐️ 가장 많이 사용 마지막 라인의 뒷부분을 잘라내 말줄임표로 처리합니다. label.lineBreakMode = .byTruncatingTail // 마지막 라인의 뒷부분을 ... 처리 이 ..
클래스 상속과 초기화 (Class Inheritance and Initialization) 모든 클래스의 저장 프로퍼티와 상위클래스로부터 상속받은 모든 프로퍼티는 초기화 단계에서 반드시 초기값이 할당 되어야 합니다. Swift에서는 클래스 타입에서 모든 프로퍼티가 초기값을 갖는걸 보장하기 위해 2가지 방법을 지원합니다. 지정 초기자와 편의 초기자 (Designated Initializers and Convenience Initializers) 지정 초기자는 클래스의 주요 초기자입니다. 클래스의 모든 프로퍼티를 초기화 하며, 클래스 타입은 반드시 한개 이상의 지정 초기자가 있어야 합니다. 편의 초기자는 초기화 단계에서 미리 지정된 값을 사용해 초기화를 할 수 있도록 해주는 초기자 입니다. 편의 초기자 내에..
초기화 초기화는 클래스, 구조체, 열거형 인스턴스를 사용하기 위해 준비 작업을 하는 단계 입니다. 이 단계에서 각 저장 프로퍼티의 초기 값을 설정 합니다. initializer를 정의하여 초기화 과정을 실행 시킬 수 있습니다. Swift의 initializer는 값을 반환하지 않습니다. 초기화와 반대로 여러 값과 자원의 해지를 하기 위해 deinitializer를 사용합니다. 저장 프로퍼티를 위한 초기값 세팅 (Setting Initial Values for Stored Properties) 클래스와 구조체는 인스턴스가 생성될 때까지 저장프로퍼티를 적절한 초기값으로 세팅해야 합니다. NOTE 저장프로퍼티에 기본값을 할당하거나, initializer에 초기값을 세팅하면, 프로퍼티 옵저버가 호출되지 않고 해..
대부분의 앱들이 서버와 통신해 데이터를 주고 받은데요 가끔 인터넷 연결이 불안정하거나, 꺼져있을 경우 이를 체크할 수 있는 프레임워크가 있습니다. 오늘은 네트워크 실시간 연결 확인 과 어떤 타입으로 연결되어 있는지 확인 하는 방법을 공부 해 보겠습니다. Network Network 프레임워크에서 제공하는 기능중, 네트워크 상태 업데이트를 받기 위해 NWPathMonitor 를 사용 해야 합니다. 실시간 관찰자 (monitor)생성 먼저, 네트워크 상태를 모니터링 하기 위해 monitor 를 인스턴스화 해줍니다. // AppDelegate.swift import Network let monitor = NWPathMonitor() monitor.start(queue: .global()) // 백그라운드 qu..
iOS 13 버전 부터 '다크 모드' 를 지원하게 되었는데요. 이게 모드에 따라 색을 지정해주지 않으면 난감한 상황이 나오게되는데 일단 텍스트 필드를 예로들어볼게요. 일반모드와 다크모드 각각 적용한 화면인데요. 사용자 입장에서 다크모드로 보면 저게 텍스트필드인지 Label인지 버튼인지 알 수 없을겁니다. 각자 색을 지정해주는 방법도 있지만 오늘은 다크모드를 제한 하는 방법에 대해 알아 보겠습니다! 2가지 방법이 있습니다. info.plist를 수정하는 방법 AppDelegate에서 수정하는 방법 원하는 방법들중 골라서 사용하시면 됩니다. :) 1. info.plist 아래와 같이 info.plist에 들어가서 Information Property List 우클릭 → Add row → Appearance ..
최근 수정일자 (2024.12.28) 오늘은스토리보드 없이 코드로 작업시 세팅하는 부분에 대해 알아보겠습니다 :) Xcode 11 버전 이상Xcode 10 버전 이하 나뉘어져 있으니 본인에 맞는 버전으로 적용하시면 됩니다. Xcode 11 이상 버전 • Main.storyboard 삭제 Move to Trash 로 파일을 완전 삭제 해줍니다. • Main.storyboard 에 대한 참조 제거 • Info.plist Storyboard Name 삭제 • main window 생성SceneDelegate scene 메소드에서 아래와 같이 입력해줍니다. // SceneDelegateclass SceneDelegate: UIResponder, UIWindowSceneDelegate { var w..
상속 (Inheritance) 클래스는 메소드, 프로퍼티, 다른 특징들을 다른 클래스로 부터 상속할 수 있습니다. 상속을 해주는 클래스를 superclass(상위 클래스, 슈퍼 클래스)라고 하며, 상속 받는 클래스는 subclass(하위 클래스, 서브 클래스)라고 합니다. 상속은 Swift에서 다른 유형과 클래스를 구별하는 근본적 요소 입니다. 클래스는 상속된 프로퍼티에 프로퍼티 옵저버를 추가하여 프로퍼티 값이 변경될 때 알림을 받을 수도 있습니다. 프로퍼티 옵저버는 저장프로퍼티, 연산프로퍼티에 관계 없이 모든 프로퍼티에 추가할 수 있습니다. 프로퍼티 옵저버는 여기에 정리해 놓았습니다. 클래스 정의 (Defining a base class) base 클래스란 어떤 클래스로 부터도 상속받지 않은 클래스를 ..
경쟁 상황 (Race Condition) 두개 이상의 Thread를 사용하면서, 동일한 메모리 접근 등으로 인해 발생할 수 있는 문제 아래 예제를 보시죠. var value = 777 func changeValue1() { sleep(2) value = 222 } func changeValue2() { sleep(2) value = 0 } queue.async { changeValue1() } queue.async { changeValue2() } print("(비동기)함수 실행값:", value) print에는 뭐가 찍힐까요 ? 777 이나와요. changeValue1,2 함수가 실행되고 기다리는동안 (sleep) 제일 아래 print 문이 실행되는거죠. 해결방법 (3가지) 1. TSan (Thread..
- Total
- Today
- Yesterday
- Swift final
- 원티드 프리온보딩
- Combine: Asynchronous Programming with Swift
- ios
- swift 고차함수
- Swift RIBs
- Swift joined()
- Swift joined
- CS 네트워크
- Swift 프로그래머스
- Swift
- Swift init
- swift protocol
- Swift 프로퍼티
- iOS error
- Class
- swift reduce
- Swift inout
- RIBs tutorial
- RTCCameraVideoCapturer
- swift programmers
- Swift 내림차순
- Swift Leetcode
- Swift 알고리즘
- 2023년 회고
- removeLast()
- swift (programmers)
- swift property
- Swift Error Handling
- Swift ModernRIBs
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |