IOS

    IOS - charts library

    다양한 차트들을 쉽게 나타낼 수 있게 해주는 라이브러리 관련 주소 - https://github.com/danielgindi/Charts GitHub - danielgindi/Charts: Beautiful charts for iOS/tvOS/OSX! The Apple side of the crossplatform MPAndroidChart. Beautiful charts for iOS/tvOS/OSX! The Apple side of the crossplatform MPAndroidChart. - GitHub - danielgindi/Charts: Beautiful charts for iOS/tvOS/OSX! The Apple side of the crossplatform MPAndroi... gith..

    IOS - COCOAPODS

    COCOAPODS: - IOS, macOS, tvOS, watchOS등 애플 플랫폼에서 개발을 할때 외부 라이브러리를 관리하기 쉽도록 도와주는 의존성 관리도구. - 프로젝트에서 필요한 외부 라이브러리를 코코아팟을 통해 쉽게 관리하고, 사용할 수 있다. 설치방법: 터미널에서 $ sudo gem install cocoapods 적용 방법: 터미널에서 ls, cd키워드를 이용해서 프로젝트 폴더 내부로 진입한다. ls: 현재 위치 상의 폴더와 파일을 나타내는 커맨드 cd 이동할위치: 이동할위치로 이동하게되는 커맨드 프로젝트 폴더 내부에서 pod init을 입력하게되면 프로젝트에 Podfile이라는 프로그램이 생성된다. 프로그램을 열어서 pod '라이브러리 이름' 형식으로 라이브러리를 추가해주면 된다. 라이브러리..

    Swift - Codable Protocol

    Codable Codable은 Swift의 Decodable과 Encodable프로토콜을 결합한 프로토콜이다. 이들은 사용자 정의 유형에 대한 데이터 디코딩 및 저장 또는 전송될 인코딩 데이터의 표준을 제공한다. JSON과 함께 Codable을 사용하면 데이터 개체를 반환하기 위해 코드 구문 분석에 필요한 모든 검사가 필요하지 않으며 데이터가 복잡해짐에 따라 다양한 복잡성을 처리하여 코드를 가능한 최소화하며 깔끔하게 유지한다. 이러한 코드는 읽기 쉬우며 유지관리가 가능하며 데이터가 복잡해 지면 해당 데이터를 Swift객체로 구문분석하는 코드가 많아지고 유지관리가 힘들어 진다. 예시를 들어보자. // JSON Data: { "id": 1234, "src": "//api.someHost.com/version..

    IOS - URL Session을 이용한 HTTP통신

    URL Session을 이용한 HTTP통신 웹 통신과 Protocol - 인터넷 상에서의 통신을 말한다.(소식을 전한다) - 많은 정보들이 주고 받기에 인터넷에는 엄격한 규약이 존재한다. 이것을 Protocol 이라고 부른다. ex) 메일을 주고받을때 - SMTP 파일을 주고받을때 - FTP 브라우저, 웹서버와 통신할 때 - HTTP HTTP(Hyper Text Transfer Protocol) - Hyper Text를 전송하기 위한 프로토콜 - HTML문서를 주고받을 때 사용 요청: request 응답: response 클라이언트에서 서버에 요청을 하면 그에 맞는 응답 결과를 돌려준다. Http패킷 헤더에는 보내는사람의 주소 받는사람의 주소, 생존시간 바디에는 우리가 전하고자하는 실제 내용이 담겨있다...

    IOS - Timer

    Timer: - 특정 시간이 지난 후에 이벤트를 발생시키거나 반복적인 주기로 특정작업을 수행하는등의 행위를 하는 이벤트. - Swift에서 Timer라는 클래스로 타이머를 구현할 수 있다. - GCDapi에있는 디스패치소스타이머로 구현할 수 있다. GCD(Grand Central Dispath api) - ( 작업을 병렬적으로 처리하기위해 애플이 제공하는 API) - 쓰레드를 만들거나, 관리해야하는 어려운 작업들을 맡아서 해줌. - GCD를 이용하면 개발자는 그저 태스크들이 담긴 큐를 만들고 그 큐를 GCD에 던져버리면 GCD가 모든 쓰레드를 관리해줌.

    IOS - ObserverPattern

    옵저버패턴: - 한 Object의 상태가 바뀌면 그 Object를 구독하는 다른 객체들에 연락이 가고 자동으로 내용이 갱신되는 디자인 패턴으로 1:N의 관계를 정의함. - 관찰중인 객체에서 발생하는 이벤트를 여러 다른 객체에 알리는 메커니즘을 정의할 수 있는 디자인패턴. - 다른 객체의 상태가 변경될 때 마다 어떤 이벤트를 실행하고 싶을 때 주로 사용. - 주로 MVC패턴에서 사용. - Model은 ViewController의 타입에 대해 알 필요 없이 상태가 변경될 때 마다 이를 ViewController에 전달. - 여러개의 ViewController가 하나의 Model의 변경사항을 사용할 수 있게 됨. 디자인 패턴들은 서로 상호작용을 하는 객체 사이에서는 가능하면 느슨하게 결합되는 디자인을 사용해야..

    IOS - NotificationCenter

    특정 개체가 NotificationCenter에 등록된 Event를 발생시키면 해당 Event를 처리하고 등록된 Observer들이 이Event에 대한 행동을 취하는 것. 앱 내에서 아무데서나 메세지를 던지면 앱 내에서 아무데서나 메세지를 받을수 있게 해주는 것 특정 개체가 Event를 발생시키는 것을Post라고 한다 옵저버를 등록해서 Post된 메세지를 받을 수 있다.

    IOS - addTarget, @objc

    @objc: Swift를 사용한 코드를 Objective-C코드와 상호작용 할 수 있게 쓰는 키워드. Swift를 사용한 코드에서 class나 method에 이 키워드를 붙이면 Objective-C와 Swift 코드에서 사용할 수 있다.. addTarget: func addTarget(_ target: Any?, action: Selector, for controlEvents: UIControl.Event) target 오브젝트와 action메서드를 이어준다. 매개변수 target: action메서드가 호출된 개체를 지정 action: 호출할 작업 메서드를 식별하는 셀렉터(#selector), nil이 아니어야함. controlEvents: 어떠한 일이 발생하면 셀렉터 메서드를 호출할 것인지를 넘겨주어야..

    IOS - func touchesBegan

    override func touchBegan(_ touches: Set, with event: UIEvent?) 유저가 화면을 터치하면 호출되는 메서드 활용) override func touchesBegan(_ touches: Set, with event: UIEvent?) { self.view.endEditing(true) } 빈 화면을 누르면 키보드나 데이트픽커가 사라진다. 에디팅 모드가 끝난다.

    IOS - UserDefaults

    Runtime환경에 동작하면서 앱이 실행되는 동안 기본 저장소에 접근해 데이터를 기록하고 가져오는 역할을 하는 인터페이스 "키 - 밸류" 쌍으로 존재하며 앱 전체에 단 하나의 인스턴스만 존재하게됨 스위프트에서 제공되는 double, int, float, boolean와 NSdata, NSString, NSNumber, NSDictionary, NSArrary등 NS관련타입도 저장이 가능하다. 저장: userDefaults.set(value: Any?, forKey: String) value: Any? 에는 data를 넣어주고 forKey: String에는 data의 구분이되는 값을 넣어준다. ex) func saveTasks(){ let data = self.tasks.map{ [ "title": $0...