 Apple Lover Developer & Artist

영속적인 디자인에 현대의 공감을 채워넣는 공방입니다

반응형

전체 글 116

[Challenge] GCD

Overview 스레드는 실행중인 코드의 흐름을 관리해준다. 과거의 컴퓨팅 환경에서는 모든 코드가 단일 스레드 환경에서 실행되었지만 iOS와 같은 현대적인 운영체제에서는 여러가지 스레드가 여러 코드의 흐름을 동시에 실행시킬 수 있도록 지원해준다. (더군다나 오늘날의 멀티 코어 프로세서를 사용하면 스레드는 서로 다른 코어에서 실행될 수 있으나, 현재 사용하고 있는 컴퓨터가 싱글 코어일지라도 CPU 가상화를 통해 마치 동시에 실행되는 것처럼 보이는 환상을 준다) iOS 에서는 모든 사용자 인터페이스와 연관된 코드를 실행시킬 때에 main 스레드를 활용한다. Grand Central Dispatch (GCD) Grand Central Dispatch (GCD)는 iOS에서 제공하는 기술이며 시스템 큐에서 di..

[Challenge] 간단한 네트워크 통신에 대해 탐구해보자!

Overview 휴대폰에 설치되어있는 어플리케이션을 살펴보면 모두 네트워크 통신을 사용한다. 네트워크 통신 중에는 여러가지 외적인 변수가 개입될 수 있다. 예를 들어 iOS 앱이 서버에 무언가를 요청했는데 서버가 조금 늦게 처리해서 응답해줄 수도 있고 네트워크 환경에 따라 처리된 결과가 늦게 아이폰으로 도착할 수도 있을 것이다. 데이터를 송수신하는 것을 처리하는동안 사용자가 어플리케이션에 아무런 조작도 할 수 없고 기다려야 한다면.... 한국인으로써 매우 유감스러운 상황이 발생하게 될 것이다. 오늘은 iOS 상에서 간단한 네트워크 통신을 다뤄보며 병행성을 다뤄보는 것이 목표이다. Basic 앱에서 네트워크 기능을 구현하기 전에 간단하게 네트워크가 동작하는 컨셉에 대하여 살펴볼 필요가 있다. HTTP롸 H..

[Challenge] 화면 전환에 대해 탐구해보자!

Overview 우리가 사용하는 어플리케이션이 하나의 화면에서 동작하는 경우가 흔한 일이 아니다. 다수의 앱은 다양한 형태의 데이터를 보여주기 위해 다양한 화면을 갖고 있으며 각 화면의 뒤에는 개별적인 ViewController 인스턴스가 동작하고 있다. 프로젝트를 구현하면서 ViewController 간의 화면 전환 기능을 활용해야 하는 경우가 많이 있었는데 오늘 간단하게 정리해보고 넘어가보려고 한다. Segue 에 존재하는 타입에 대해 알아본다. 네비게이션 컨트롤러에서 서로 다른 화면간에 segue 를 어떻게 생성하는지 배워본다. navigation 계층을 활용한 좀더 복잡한 UI를 구성해본다. Segue segue 는 하나의 View Controller 에서 다른 View Controller 로의 ..

Lecture 13 : TableView & Collection View

Overview UITableView와 UICollectionView 에 대해서 다룬다! iOS 에서 모두 이미 본 개념이기 때문에 무슨 역할을 하는지 이미 알고있을 수 있다. UIScrollView의 Subclass이다. 범위가 지정되지 않은 양의 정보에 접근하기위해 사용된다. 테이블 뷰는 긴 리스트의 형태로 정보를 보여준다. 컬렉션 뷰는 Configurable 한 (구성가능한) 방식으로 제공되며 거의 모든 2차원 방식을 제공한다. 텍스트가 흐르는 것처럼 2차원 format 으로 보여주기 때문에 Flow Layout 이라고 부르기도 한다. 텍스트가 흐른다는 표현은 왼쪽에서 오른쪽으로 나열되다가 공간이 부족하면 다음 줄로 이동한다. 이것이 바로 컬렉션 뷰가 기본적으로 배치되는 방식이다. 사용자 정의하는 ..

Lecture 4 Review - More Swift

Overview Swift 에 관한 세부 개념을 다루며 가장 중요한 주제인 프로토콜과 Closure 에 관하여 다룬다. 일반적으로 타입으로서의 함수도 다루게 된다. String 도 다루기는 하는데 주요한 주제는 아니다. 기존에 작성된 Concentration 게임 모델은 클래스로 작성되어있었다. struct 가 적합할 것 같아서 타입을 선언해주는 방법을 바꾸게 되었다. 왜냐하면 어딘가로 넘겨주지 않고 컨트롤러 내부에서만 위치하기 때문이다. struct 로 키워드를 바꾸니까 오류가 발생한다. self 가 immutable 하기 때문이다. 일단 함수에 mutating 키워드가 사용되지 않았기 때문에 타입의 상태를 바꾼다고 생각하지 않는다. 하지만 카드를 선택하는 과정은 faceup 상태를 바꾸기 때문에 mu..

[💻 Xcode] 🍯꿀팁 단축키

코드를 실행시키는 단축키 Command + R(un) : 프로젝트를 시뮬레이터나 장치에서 구동시킨다. Command + B(uild) : 프로젝트를 빌드한다. Command + . : 빌드하거나 구동하고 있는 작업을 중단한다. 시뮬레이터 시뮬레이터의 방향을 바꿔주는 단축키 Command + LeftArrow Command + RightArrow 시뮬레이터의 해상도를 바꿔주는 단축키 Command + 1 Command + 3 개발자 문서 열기 Command + Shift + 0 Xcode 의 모든 것들을 navigate 하는 단축키 좌측 Navigation Bar 를 열고 닫으려면 Command + 0 Navigation Bar에 존재하는 세부적인 item 에 접근하려면 숫자를 하나씩 올려가면 된다. (프..

Lecture 2 Review: MVC

Overview 객체지향 디자인 패턴 중 MVC 를 다뤄본다. 컨셉에 대해서 배워보자! Model View Controller 역할 시스템 내부에 있는 객체들을 3가지의 캠프로 나눈 것이다. 파란색으로 표시된 Model 캠프는 UI와 독립적인 객체들의 집합이다. What your application is (but not how it is displayed) Concentration 게임의 예시로 어떻게 게임이 진행되는지 알고 있는 영역이다. 어떻게 카드를 math 시키고 제거하는가?, 언제 카드를 뒤집어야하는가? 다만 어떻게 화면에 보여져야 하는지에 관한 내용은 없어야한다. 어떻게 화면에서 보여주는지에 관한 책임은 Controller 캠프에 있다. How it shows up on screen. Vie..

Lecture 1 Review: Developing iOS 11 Apps with Swift

Overview 이 과정에는 iOS 어플리케이션을 개발하는 방법에 관하여 학습합니다. 전제 조건으로 객체지향 프로그래밍과 친숙해야 합니다. 상업적인 개발 플랫폼에는 데이터베이스, 그래픽스, 멀티미디어, 멀티스레딩, 애니메이션, 네트워크와 같은 CS 컨셉이 사용됩니다. 아래쪽에 위치한 layer 의 경우 하드웨어에 가까우며 위쪽으로 올라갈수록 사용자에게 가까워진다. iOS는 BSD 변형 Unix 기반의 운영체제이다. Core OS 계층에서 발생하는 대다수의 작업은 C로 이뤄지며 이 강의에서는 다루지 않는다. Core Service 계층은 객체지향적으로 구현된 계층이다. 휴대폰의 위치, 방향, 파일시스템에서 파일에 접근할 때 이 계층을 사용한다. 본래 아이폰은 아이팟으로 부터 탄생했다. 오디오, 비디오, 이..

[Challenge] iOS 13 이후의 Scene 톱아보기!

Overview Scene 은 앱의 UI 인스턴스를 동시에 여러개 관리하며 적절한 UI 인스턴스로 resources 을 연결해준다. UIKit 은 앱의 UI의 각 인스턴스를 UIWindowScene 객체를 통해 관리해준다. 하나의 scene 은 window 와 view controller 를 포함하고 있으며 UI의 한 인스턴스를 보여주기 위해서이다. 각 scene 은 상응하는 UIWindowSceneDelegate 객체를 갖고있으며 UIKit 과 앱 사이에 상호작용을 조직하기 위해 사용할 수 있다. Scene 은 서로 병렬적으로 동작하며 같은 메모리 공간과 앱의 프로세스 공간을 공유한다. 결론적으로 하나의 앱은 여러개의 scene 을 가질 수 있으며 scene delegate 객체는 동시에 활성화된다. ..

[iOS - Laboratory] iOS 앱의 Life Cycle 추적해보기 (iOS 12와 이전 버전)

Overview Managing Your App's Life Cycle 아티클을 읽어보고자 한다. 앞서 포스팅한 글에서 앱이 실행된 후 종료되기까지 다양한 상태를 가질 수 수 있으머 상태 변환은 앱이 종료되거나, 전화가 오는 등의 interruption 이 발생하면 발생될 수 있다는 점을 알 수 있었다. 이 아티클에서는 앱이 foreground 혹은 background 상태에 있을때 시스템의 Notification 에 응답하고 다른 중요한 시스템 관련 이벤트가 있을 때 처리하는 내용이 언급된다. 앱의 현재 상태는 어느 시점에 할 수 있는 일과 할 수 없는 일에 관하여 결정해준다. 예를 들어 foreground 앱은 사용자의 주목을 받있으며 CPU 같은 시스템 자원을 할당받는데 우선순위를 갖는다. 반대로 ..

반응형