목록분류 전체보기 (83)
Haru's 개발 블로그
클래스 상속이란? -> 부모 클래스의 행위, 속성 상속을 의미한다. 옵젝씨는 단일 상속을 지원함! iOS 개발에서 만나는 상속 뷰(부모 클래스)와 레이블, 이미지 뷰, 버튼 뷰의 속성과 행위(위치, 크기, 화면 표시)를 상속 상속을 통해서 상세화, 구체화됨 1. 자식 클래스 생성 Subclass of -> 부모 클래스를 의미함 #import "Rectangle.h" @interface Square : Rectangle @end 2. 상속과 is-a 관계 자식 클래스 객체는 부모 클래스 객체로 취급 뷰 관계에서의 is-a 관계 UIView *view1 = [[UILabel alloc]init]; UIView *view2 = [[UIImageView alloc]init]; 사각형과 정사각형에서의 is-a 관..
The Composable Architecture(TCA) 뜻 The Composable Architecture(TCA)는 일관되고 이해할 수 있는 방식으로 어플리케이션을 만들기 위해 탄생한 라이브러리입니다. 합성(Composition), 테스팅(Testing) 그리고 인체 공학(Ergonomics)을 염두에 둔 TCA는 SwiftUI, UIKit을 지원하며 모든 애플 플랫폼(iOS, macOS, tvOS, watchOS)에서 사용 가능합니다. The Composable Architecture 구성 요소 상태(State) 관리 : 간단한 값 타입들로 어플리케이션의 상태를 관리하는 방법, 상태를 공유를 통해 화면에서 일어나는 변화(Mutation)를 다른 화면에서 즉시 관측(Observe)하는 방법을 제공..
1. 클래스 파일 만드는 방법 1-1. New File 생성 1-2. Cocoa Class 선택 1-3. Subclass of, Class 셋팅 1-4. 선언부 -> 헤더 파일(.h) , 구현부 -> 구현 파일(.m) 생성되는 것을 확인가능 클래스 선언부(.h) 클래스의 행위를 알리는 역할 형식 @interface Rectangle : NSObject @end 클래스 구현부(.m) 클래스의 행위 동작 코드 작성 형식 #import "Rectangle.h" @implementation Rectangle @end 멤버 변수 선언 클래스에서 다루는 데이터 클래스 선언부(.h)에 선언하기 -> 공개하고 싶을 때 @interface Rectangle : NSObject { int width; } @end 클래스 ..
NSLog 디버그 영역의 콘솔에 정보 출력하기 NSLog(@”문자열 포맷”,인자) 문자열: @”문자열” 포맷 문자열과 인자 대치 포맷 문자열 정수형 %d, %u(unsigned) %ld, %lu(long 타입) 실수형 %f, %e(지수형) 16진수, 8진수 %x,%o 객체형 %@ 다수의 데이터 사용 NSLog(@”%d + %d = %d”, 1, 2, (1+2)); 포맷 문자열 개발자 사이트에서 string format specifier 검색하기 클래스 어플리케이션이란? 컨텐츠를 얻어와서 사용자에게 출력 사용자의 동작에 반응하여 컨텐츠 가공 컨텐츠의 공유 이때 어플리케이션에서 클래스란? 데이터와 데이터를 조작하는 행위의 단위 객체 실제 데이터가 반영하여 동작 중인 개체(instance, object) 클래..
Objective-C 공부하는 이유 오픈 소스들을 살펴보면 옵젝씨를 사용하는 곳이 많다. Unity를 iOS에 연동하여 사용하는데 옵젝씨 코드였다. 회사에 들어가면 옵젝씨 코드를 볼수도 있다(주로 리펙토링) Swift랑 옵젝씨를 다 할 줄알면 앞으로가 든든해진다. 1. 프로젝트 생성하기 2. 생성된 파일 체크하기 이미지를 확인해보면 헤더 파일(.h)을 발견할 수 있다. -> 마치 C언어 느낌 -> Objective-C는 C언어를 확장한 언어이다! 따라서 Objective-C에서는 C언어의 모든 문법을 사용 가능 Objective-C는 C언어를 객체지향형으로 확장한 언어이다. 3. ViewController.h를 살펴보기 #import @interface ViewController : UIViewContr..
App의 모델 데이터와 뷰 간의 connection을 만들어 주는 3가지 property wrapper type을 제공한다. ObservedObject EnvironmentObject StateObject StateObject의 개념 관찰 가능한 개체를 인스턴스화하는 속성 래퍼 유형입니다. StateObject의 필요성 SwiftUI는 언제든지 다시 뷰를 생성이 가능하다. -> 주어진 inputs을 가지고 뷰를 이니셜라이징하면 동일한 뷰가 생성이 된다. -> 뷰 안에서 ObservedObject를 만드는 것은 안전하지 않다. 대신에 SwiftUI는 이 목적을 위해 StateObject를 제공해준다. StateObject를 사용하면 뷰안에서 안전하게 ObservedObject 인스턴스를 만들 수 있다. c..
어플리케이션 설정을 저장하는데 쓰는 UserDefaults 객체이다 State가 바뀔때 State로 UserDefaults를 사용할 것이면 약간의 전처리가 필요하다. 1. UserDefaults propertyWrapper import Foundation import Combine @propertyWrapper struct UserDefault { let key: String let defaultValue: T init(_ key: String, defaultValue: T) { self.key = key self.defaultValue = defaultValue } var wrappedValue: T { get { return UserDefaults.standard.object(forKey: key) ..
Thread(lightweight process) Thread란 프로세스의 내부의 CPU 실행 단위 / CPU 수행 단위이다. 동일한 작업을 하는 프로세스가 여러 개 인 경우 프로세스의 Address space는 하나만 생성하고 여러 개의 thread를 둠으로써 메모리의 낭비를 줄이고 프로세스마다 다른 부분의 코드를 실행할 수 있다. (lightweight process) Thread의 구성 program counter register set stack space thread가 동료 스레드와 공유하는 부분(=task) code section data section OS resources 전통적인 개념의 heavyweight process는 하나의 thread를 가지고 있는 task로 볼 수 있다. 다중 ..