본문 바로가기

프로그래밍/iOS

(32)
Concurrency Programming Guide (1) - 소개 동시성은 동시에 일어나는 여러 가지 일에 대한 개념이다. 멀티코어 CPU의 확산과 각 프로세스의 코어 수만 증거할 것이라는 인식으로 인해 소프트웨어 개발자들은 이를 활용할 새로운 방법이 필요하다. OS X 및 iOS와 같은 운영 체제는 여러 프로그램을 병렬(parallel)로 실행할 수 있지만 이러한 프로그램의 대부분은 백그라운드에서 실행되며 프로세서를 지속적으로 사용하지 않는 작업을 수행한다. 현재 포어그라운드 애플리케이션이란 사용자의 주의를 끌며 컴퓨터를 계속 작동시킨다. 애플리케이션이 해야 할 일은 많지만 사용 가능한 코어의 일부만 점유하고 있는 경우 이러한 추가 처리 리소스는 낭비 된다. 과거에는 애플리케이션에 동시성을 적용하려면 하나 이상의 추가 스레드를 만들어야 했다. 불행히도, 스레드 코드를..
Threading Programming Guide (2) - About Threaded Programming 많은 시간 동안 컴퓨터의 최대 성능은 컴퓨터 중심에 있는 싱글 마이크로프로세서의 속도에 의해 크게 제한이 되었다. 그러나 개별 프로세서의 속도가 한계에 도달하기 시작하면서 칩 제조업체는 멀티 코어 설계로 전환하여 컴퓨터가 여러 작업을 동시에 수행할 수 있는 기회를 제공했다. OS X는 시스템 관련 작업을 수행을 할 때 멀티 코어를 활용한다. 애플리케이션도 스레드를 통해 멀티 코어를 활용할 수 있다. 스레드란 무엇일까? 스레드는 애플리케이션 내부에서 여러 실행 경로를 구현하는 비교적 가벼운 방법이다. 시스템 수준에서 프로그램은 나란히 실행되며 시스템은 각각의 프로그램의 요구에 따라 프로그램들의 실행 시간을 할당한다. 그러나 각각의 프로그램 내부에는 여러 작업을 동시에 또는 거의 동시에 수행하는 데 사용할 ..
Threading Programming Guide (1) - 소개 스레드는 하나의 애플리케이션 내에서 하나 이상의 코드 경로를 동시에 실행할 수 있게 해주는 기술 중 하나이다. 오퍼레이션 오브젝트 및 Grand Central Dispatch(GCD)와 같은 최신 기술이 동시성(concurrency)을 구현하기 위한 보다 현대적이고 효율적인 인프라를 제공하지만 OS X 및 iOS는 스레드 생성 및 관리를 위한 인터페이스도 제공한다. 이 문서는 OS X에서 사용할 수 있는 스레드 패키지를 소개하고 사용 방법을 제공한다. 이 문서에서는 애플리케이션 내에서 스레드 및 여러 개의 스레드 코드의 동기화를 지원하기 위해 제공되는 관련 기술에 대해서도 설명한다. ※ 중요 새 애플리케이션을 개발하는 경우 동시성을 구현하기 위한 대체 OS X 기술을 찾는 것이 좋다. 스레드가 적용된 애..
UICollectionView에 대해 알아보자. 1. UICollectionView가 무엇인가? 정렬 된 데이터 항목 모음을 관리하고 사용자 지정 가능한 레이아웃을 사용하여 표시하는 개체 컬렉션 뷰는 저장된 DataSource 개체에서 데이터를 가져온다. DataSource의 경우 CollectionView의 데이터 및 User Interface에 대한 업데이트를 간단하고 효율적으로 관리함. Supplementary View는 UITableView의 Header와 비슷한 역할을 한다. 2. 컬렉션뷰와 관련된 클래스 및 프로토콜 UICollectionView : 사용자에게 보여질 Collection 형태의 뷰 UICollectionViewCell : UICollectionView instence에 제공되는 데이터를 화면에 표시하는 역할을 담당 UICol..
Alamofire Framework 사용하기 0. Alamofire란? Swift에서 HTTP 네트웍 라이브러리를 사용해 만든 것이다. 1. 사용 가능한 환경 IOS 10.0+ (현재 2020.11.07 기준) 아래의 주소에서 최신 정보를 확인할 수 있다. Alamofire/Alamofire Elegant HTTP Networking in Swift. Contribute to Alamofire/Alamofire development by creating an account on GitHub. github.com 2. 설치 CocoaPods을 이용해 추가한다. pod 'Alamofire', '~> 5.2' 3-1. 사용 하기 전 기존 코드(network 라이브러리 사용 시) import Foundation import Network class Log..
Github OAuth로 로그인하기 0. Github Developer 에서 앱 설정 1. LoginManager 만들기 class LoginManager { static let shared = LoginManager() private init() {} private let client_id = "클라이언트 아이디를 넣어준다." private let client_secret = "클라이언트 Secret을 넣어준다." func requestCodeToGitHub() { let scope = "repo,user" let urlString = "https://github.com/login/oauth/authorize?client_id=\(client_id)&scope=\(scope)" if let url = URL(string: urlStrin..
구조체(Struct) 클래스(Class)의 공통점과 차이점 공통점 값을 저장하기 위한 Properties 정의 기능을 제공하기 위한 Methods 정의 Subscript 문법을 이용해 특정 값을 접근할 수 있는 Subscript 정의 initial 상태를 설정할 수 있는 initializers 정의 기본 구현에서 기능 확장 특정한 종류의 표준 기능을 제공하기 위한 Protocols 순응 차이점 Struct 값 타임 인자로 보내거나 배열에 넣거나 심지어 다른 변수에 할당해도 복사가 된다. IOS에서는 배열, 정수형, 문자열, 딕셔너리 등 구조체로 구성되어 있다. Copy On Write (COW) 무언가를 전달할 때 모든 내용을 하나하나 전부 복사하지 않는다. 누군가 내용을 변경했을 때만 실제로 복사하도록 하는 전달 방식을 취한다. Class 래퍼런스 타입 Hea..
MVC(Model-View-Controller) 패턴 1. Model - Model 객체는 앱에 관련된 데이터를 캡슐화하고 해당 데이터를 조작하고 처리하는 논리 및 계산을 정의한다. - App의 What을 담당 ※ UI와 독립되어 있다. 2. View - View 객체는 사용자가 볼 수 있는 앱의 객체이다. - View 객체는 앱의 Model 객체의 데이터를 표시하고 해당 데이터를 수정할 수 있도록 하는 것 - 수정할 수 있도록 하는 것이지만 Model 객체와는 분리되어야 함. - 이유는 재사용하고 재구성하기 때문에 앱 간의 일관성을 제공해야 하기 때문이다. - Controller의 통제를 받는다. 3. Controller - Controller 객체는 하나 이상의 Model / View 객체 사이에서 중개자 역할을 한다. - App에 대한 설정 및 조정 ..