본문 바로가기

분류 전체보기

(354)
152 ~ 158. Memory, Value Type and Reference Type (메모리, 값형식과 참조형식) Memory Basics 메모리는 0과 1을 저장하는 반도체이다. 전기가 통하면 1, 전기가 통하지 않으면 0을 저장할 수 있다. Bit 0과 1을 저장할 수 있는 가장 작은 단위를 Bit(비트)라고 부른다. Bit 0 or 1 Byte 비트 8개를 묶어서 Byte(바이트)라고 부른다. 컴퓨터 데이터 처리의 기본 단위로 사용되며, 양수만 저장 할 때는 0^8개의 경우인 0~255까지, 음수와 양수를 동시에 저장하면 -128~127까지의 범위를 저장할 수 있다. Byte MSB LSB 8개의 비트 중 가장 왼쪽의 비트를 MSB(Most Significant Bit)라고 부르며, 가장 오른쪽의 비트를 LSB(Least Significant Bit)라고 부른다. 데이터 저장 방식 Byte의 양수 저장 컴퓨터에..
140 ~ 151. Protocol (프로토콜) Protocol (프로토콜) 형식에서 공통으로 제공하는 멤버 목록이다. 프로토콜 내에는 멤버들이 선언되어 있지만 실제 구현은 포함되지 않는 대신 클래스나 구조체 등이 이를 구현한다. 이를 'Adopting Protocol(프로토콜을 채용한다.)'라고 한다. 프로토콜을 채용한 형식은 프로토콜에 선언된 멤버를 모두 구현해야만 한다. 따라서 프로토콜 내에 선언된 멤버들을 'Requirements(요구사항)'이라고 한다. Syntax protocol ProtocolName { propertyRequirements methodRequirements initilaizerRequirements subscriptRequirements } protocol ProtocolName: Protocol, ... { } Defi..
135 ~ 139. Extension (익스텐션) Extension (익스텐션) 익스텐션으로 확장할 수 있는 것은 클래스, 구조체, 열거형, 프로토콜이 있다. 익스텐션은 형식에 새로운 멤버를 추가하는 것은 아니다. 새로운 멤버는 별도의 코드로 구현하고, 형식과 연결해서 기존의 멤버들과 함께 사용할 수 있다. 따라서 따라서 형식 선언을 수정할 수 없는 경우에도 사용할 수 있다. 기본자료형들도 내부적으로 구조체로 구현되어 있기 때문에 기본자료형들을 수정할 수 없어도 익스텐션을 통해 멤버를 확장할 수 있다. 익스텐션으로 멤버를 추가하는 것은 가능하지만 기존의 멤버를 오버 라이딩하는 것은 불가능하다. 만약 오버라이딩이 필요하다면 상속을 통해 서브클래스화 해야 한다. Syntax extension Type { computedProperty computedType..
128 ~ 134. Initializer and Deinitializer (생성자와 소멸자) Initializers 열거형, 구조체, 클래스는 모두 설계도의 역할을 한다. 이들을 이용해 생성한 것을 인스턴스라고 한다. 새로운 인스턴스를 생성하는 것을 초기화라고 한다. 이 초기화를 담당하는 것이 initializer이다. initializer는 모든 속성을 기본값으로 초기화해서 인스턴스를 기본 상태로 만드는 역할을 한다. 인스턴스가 초기화 되었다라는 것은 initializer가 동작을 완료했을 때 인스턴스의 모든 속성이 기본값을 가졌다는 의미이다. 만약 기본값을 가지지 않은 속성이 있다면 초기화에 실해파고 인스턴스가 생성되지 않는다. 초기화를 하는 방법은 두가지이다. 속성을 생성함과 동시에 초기화 하기 class Position { var x = 0.0 var y = 0.0 } 이 경우 initi..
122 ~ 127. Inheritance and Polymorphism (상속과 다형성) Inheritance (상속) 코드의 중복 문제와 유지보수의 편의성을 위해 공통적인 속성을 공유하는 방식이다. 예외도 있지만 대부분의 상속관계에 있는 클래스들은 Class Hierarchy(클래스 계층)를 구성한다. 클래스 계층에서 가장 상위에 있는 클래스를 Base Class 혹은 Root Class라고 한다. 그 다음 클래스들은 이 베이스 클래스를 상속 받고, 이러한 관계에서 상위에 존재하는 클래스는 Super Class 혹은 Parent Class , 하위에 존재하는 클래스를 Subclass 혹은 Child Class 라고 부른다. 따라서 정리하면 베이스 클래스 아래로는 하나 이상의 서브클래스가 존재하지만 위로는 수퍼클래스가 존재하지 않는다. 여러개의 서브클래스가 하나의 수퍼클래스를 상속 받는 것은..
118 ~ 121. Method and Subscript (메소드와 서브스크립트) Instance Method (인스턴스 메소드) 메소드는 특징 형식에 속한 함수이다. Syntax func name(parameters) -> ReturnType { code } instance.method(parameter) 구현 위치와 인스턴스를 통해 호출한다는 점을 빼면 함수와 동일하다. 클래스, 구조체, 열거형에서 구현 할 수 있다. 인스턴스 메소드는 특성 인스턴스와 연관된 기능을 구현한다. class Sample { var data = 0 static var sharedData = 123 func somethig() { print(data) } func call() { somethig() } } Sample.something 메소드는 Sample.data 속성을 호출하지만 Sample.call ..
109 ~ 117. Property (속성) Stored Property (저장속성) 형식 내부에 변수와 상수를 선언하면 속성이 된다. 이러한 속성을 저장속성(stored property)라고 한다. Syntax Variable Stored Property var name: Type = DefaultValue Contant Stored Property let name: Type = DefaultValue 클래스와 구조체에서 생성할 수 있으며, 저장속성은 인스턴스에 해당한다. 따라서 저장속성이 생길 때마다 새로운 메모리 공간을 요구한다. 문법에서 보듯 일반적인 변수와 상수를 선언하는 방식과 동일하다. 또한, 선언과 함께 초기화하는 경우 형식추론을 통해 형식을 생략하는 것도 가능하다. 다른 요소에 의존적인 값이라면 생성자를 통해 초기화 하는 것도 가능..
076 ~ 080. Accessory View, Self Sizing and Custom Cell Accessory View // // AccessoryViewController.swift // TableViewPractice // // Created by Martin.Q on 2021/09/07. // import UIKit class AccessoryViewController: UIViewController { @IBOutlet var accTable: UITableView! @IBAction func editAction(_ sender: Any) { accTable.setEditing(!accTable.isEditing, animated: true) } override func viewDidLoad() { super.viewDidLoad() } } extension AccessoryViewCon..
RICOH GR IIIx (리코 GR 3x) 공개, 가격. 서론 코로나가 창궐하기 시작하고, 졸업을 앞두고 있던 2020년 여름. 가정사와 개인사에 잘 풀리지 않는 졸업작품으로 인한 스트레스를 견딜 수 있었던 건 졸업 이후의 행복한 계획들이었다. 여행을 가자! 난 내 곁에 누굴 두기 전 혼자서 서울을 거닐며 맛집을 둘러보고, 혼자서 기다리던 영화를 보고선 아래층에 있던 패밀리 레스토랑에 들러 저녁을 먹고, 혼자서 다니는 게 조금 뻘쭘한 경우도 있었지만 조용하고, 일정에 쫓기지 않는 그런 시간을 보내는 사람이었다. 친구와 소중한 사람과 떠날 수 있는 여행이 물론 재밌겠지만 혼자만의 사색을 마음껏 할 수 있는 건 혼자 떠나는 여행 밖에는 없었다. 작은 가방에 물병 하나, 우산 하나, 작은 카메라 하나 간소하게 들고, 내가 본 것, 생각한 것을 남기고 그런 걸 해 보..
070 ~ 075. Table View, Multi Section, Separator and Table View Cell Table View TableView는 목록을 표시할 때 사용한다. TableView에는 Cell이 존재하고, 위의 화면엔 표시한 것을 포함해 9개의 Cell이 존재한다. Cell의 너비는 TableView의 너비와 같고, 따라서 수평으로 두 개의 Cell을 나란히 배치할 수 없다. 또한 스크롤 방향은 상하로 고정이다. 별도로 가로 스크롤을 설정할 수는 있지만, 해당 기능을 더 간편하게 구현할 수 있는 CollectionView를 더 많이 사용한다. Cell들이 모여있는 그룹을 Sction이라고 한다. TableView는 하나 이상의 Section을 가질 수 있고, 각각의 Section에는 Cell이 포함되지 않을 수 있다. TableView는 Sextion과 Cell을 2차원 배열로 관리한다. 따라서 ..