분류 전체보기

iOS

[iOS] Cell Life Cycle

간단한 프로젝트를 진행하면서 TableView의 DataSource, Delegate, DataSourcePrefetching에 대한 개념과 알아보고 Cell이 어느 시점에 호출되는지 자세히 알아 보도록 하겠습니다. 먼저 아래와 같은 화면 모양의 간단한 프로젝트를 만들어 보도록 하겠습니다. ViewController.Swift import UIKit class ViewController: UIViewController { let data = Array(0.. Int { return data.count } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = table..

Swift

[Swift] Swift Style Guide 정리

raywenderlich/swift-style-guide를 바탕으로 개인적으로 정리가 필요한 부분을 추가하며 작성하였습니다 :] raywenderlich/swift-style-guide The official Swift style guide for raywenderlich.com. - raywenderlich/swift-style-guide github.com 개인적인 정리를 목적으로 작성한 것이어서 번역에 오류가 많지만, 최대한 이해되는 방향으로 작성하였습니다! Updated for Swift 4.2 Naming 기술적이고 일관된 명칭은 소프트웨어를 더 쉽게 읽고 이해할 수 있게 한다. API Design Guide에 설명된 Swift 명명 규칙을 사용하십시오. 몇 가지 핵심 요인은 다음과 같은 것들이..

iOS

[iOS] 코드사이닝, 인증서, 프로비저닝 프로파일이란?

애플 개발자라면 꼭 알아야할 코드사이닝, 인증서, 프로비저닝 프로파일의 개념 및 실행 과정에 대해 알아보도록 하겠습니다. 인증서 과정을 처음 접하시는분들의 입장에선 까다롭고 복잡하여 포기하시는 경우를 종종 봤습니다. 그런데 왜 굳이 애플은 인증서를 만들어야될까요? 애플은 자신들의 기기에 어떠한 프로그램이 동작하기위해선 인증을 받아야되는데 이 부분에 대해 인증을 받기 위해서 인증서를 요청해야됩니다. 또한 앱을 앱스토어에 배포하거나 인앱결제를 할때도 iOS 꼭 필요한 절차입니다. 먼저 애플 인증서가 무엇이고, 어떻게 만드는지에 대해 알아 보도록 하겠습니다. 애플 인증서 애플만이 자신들의 기계(하드웨어)에 소프트웨어(앱, 프로그램 등)이 동작하도록 허락하기 때문입니다. 실제로 앱이 실행될때마다 애플로부터 인증..

Swift

[Swift] 1. 순수함수, Pure Function (Functional Programming in Swift)

순수 함수(Pure Function)에 관해 알아보도록 하겠습니다. 함수형 프로그래밍 Funtional Programming은 함수를 중심으로 Side-Effect가 없도록 프로그래밍을 하는 것을 말합니다. 여기서 말하는 함수는 순수함수를 말합니다. 순수함수 (Pure Function) input : 어떠한 함수에서 외부의 데이터를 직접적으로 사용하지 않고, 파라미터로 받습니다. output : input값에 의해 output이 결정되기 때문에 외부의 값들이 변경되더라도 함수 자체에는 외부에 영향을 받지 않기 때문에 Side-Effect가 없다는 것입니다. var name = “jinShine” func getName() -> String { return name } 위에 getName함수는 외부에 있는..

iOS

[iOS] 파일시스템(File System)

디렉토리구조에 대해 알아보겠습니다. 파일 디렉토리 구성 iOS Data Storage Guidelines 파일 접근 시, String대신 URL사용 권장 디스크에 파일을 읽고 쓰는것이 컴퓨터의 가장 느린 작업 중 하나. 메모리에 파일 캐싱은 항상 빠른 속도를 보장하지 않는다. 왜냐하면 메모리 사용량 증가로 또 다른 성능이 악화될 수 있고, 시스템 자체 캐시와 중복 가능성이 있기 때문입니다. 파일 시스템 내 하나의 디렉토리 실행가능한 파일, info.plist, 각종 Resources(이미지, 사운드, strings등)등을 할때 그룹화 let bundlePath = Bundle.main.bundlePath print("Path:",bundlePath, "\n") // 출력 Path: /Users/seung..

Swift

[Swift] 문자열 다루기

스위프트에서 문자열을 다루는 방법에 대해서 알아 보겠습니다. 문자열 다루기 문자열 길이 /* 문자열 길이 -> count */ var strTest: String = "안녕하십니까?" print(strTest.count) // 7 문자열 안의 문자 /* 문자열 안의 문자 문자열 안에 들어있는 문자를 확인 할때는 [] 대괄호 안에 숫자대신 스위프트에선 Index객체를 넣어 줍니다. 첫번째 문자의 위치 : 문자열.startIndex 마지막 문자 뒤의 위치 : 문자열.endIndex */ var subFirst = strTest[strTest.startIndex] // 안 var subLast = strTest[strTest.index(before: strTest.endIndex)] // ? prefix와 s..

RxSwift

[RxSwift] Subject와 Relay - (3)

Subject와 Relay의 개념에 대해 알아 보겠습니다. 지난 블로그Observable편에서 Observable이 무엇이고 어떻게 만드는지에 대해 배웠습니다. 이번장에선 Observable이자 Observer인 Subject의 개념에 대해 알아보도록 하겠습니다. Subject란 좀 더 나아가 개발을 할때 실시간으로 Observable에 값을 추가하고 Subscriber를 할 수 있는 놈이 필요합니다. 이때 Observable이자 Observer인것을 Subject라고 합니다. Observable + Observer = Subject라는 이 부분의 의미를 자세히 고민해보세요. 확실히 알고 넘어가야합니다. 이벤트를 외부에 전달해줄 경우에 사용해서, Delegate대신 사용하기도 합니다. 종류 Publish..

RxSwift

[RxSwift] Observable이란 - (2)

Observable의 개념에 대해 알아 보겠습니다. Observable이란 observable, observable sequence, sequence라는 표현을 쓰는데 사실 다 같은 말입니다. 중요한것은 이벤트가 비동기적으로 생성하는 기능 이라는것이고, 계속해서 이벤트를 생성하는데 이러한 과정을 Emit이라고 합니다. 또한 각각의 이벤트들은 숫자나 커스텀한 인스턴스등과 같은 값을 가질 수 있고, 또는 탭과 같은 제스처일 수도 있습니다. 1. Observable의 생명주기 세 개의 구성요소를 확인 할 수 있다 Observable에는 next, completed, error로 구성되어 있습니다. next 이벤트를 통해 각각의 요소들을 방출. 세 번의 tap 이벤트를 방출한 뒤 이벤트들이 다 방출되면 완전 종..

RxSwift

[RxSwift] RxSwift의 기본 개념 - (1)

RxSwift 기본 구성요소 (Observables, Operators, Schedulers) 개념에 대해 알아 보겠습니다. RxSwift란 설치 방법 여기 RxSwift Github에 설치 방법에 대한 정보가 있습니다. RxSwift는 Observable들의 순서를 사용하여 비동기 및 함수적 스타일 연산자를 사용하여 이벤트 기반 코드 작성을 위한 라이브러리로써 스케줄러를 통한 매개 변수화된 실행을하는 허용합니다. Reactive Programming은 새로운 개념이 아닙니다. 꽤 오랫동안 존재해 왔지만 지난 10년 동안 눈에 띄게 되살아났습니다. Rx는 변화할 수 있는 상태에 쉽게 대처 할 수 있고, 이벤트들의 순서의 구성과, 코드 분리, 재사용성등을 향샹 시킬 수 있습니다. Foundation of ..

Swift

[Swift] 고차함수(2) - map, flatMap, compactMap

고차함수(Higher-order-function)중 map, flatMap, compactMap에 대해 알아 보겠습니다. map map은 배열 내부의 값을 하나씩 mapping한다고 생각하면 쉽게 다가올껍니다. 각 요소에 대한 값을 변경하고자 할때 사용하고, 그 결과들을 배열의 상태로 반환합니다. Declaration func map(_ transform: (String) throws -> T) rethrows -> [T] Example let names = ["Chris", "Alex", "Ewa", "Barry", "Daniella"] names.map { $0 + "'s name" } // ["Chris's name", "Alex's name", "Ewa's name", "Barry's name",..

jinnify
'분류 전체보기' 카테고리의 글 목록 (4 Page)