iOS 17

[iOS] 공부 링크 (ing...)

init, required init, convenience init, override init required init : 클래스 상속시 반드시 init이 재구현 되어야함 convenience init : self.init 을 더 쉽게 호출할 수 있도록 구현한 init override init : 클래스 상속시 상위클래스와 init 파라미터가 동일한 경우 사용 https://ios-development.tistory.com/44 [swift] 13. 초기화(init, convenience init, required init, override init) let b = Boo() 원래의 의미는 "let b = Boo.init()" 1. init의 존재 이유 - 모든 저장 프로퍼티들은 초기화 되어야 함, in..

iOS 2022.02.07

[iOS] Rendering

* 렌더링 처리 과정 (렌더링; 사람이 이해할 수 있도록 2D/3D 로 형상화하는 것) 우선 iPhone/iPad 의 평균 주사율(refresh rate, FPS)은 60Hz 이다. (요즘 신형으로 나오고 있는 아이패드 프로나 아이폰12 같은 기기는 120Hz 까지도 나온다고 한다..!) 주사율은 1초당 refresh 하는 횟수. 즉, 주사율이 높을수록 화면 갱신이 자주 일어나 더 스무스하게 화면을 이용할 수 있다. 그리고 각각의 refresh 마다 렌더링이 반복될 수 있다. '프레임 버퍼' 라는 디스플레이의 비트맵 정보를 저장하는 메모리 공간이 있는데, 렌더링 된 결과가 이 공간에 저장되며, 이 공간에 저장된 값은 화면 디스플레이에 사용된다. 그렇다고 해서 1초에 60번씩 render 되는 것은 아니다..

iOS 2020.12.31

[iOS] Swift 기본 문법 (YouTube - yagom)

# 이름짓기 function, method, variable, constant : Lower Camel Case 사용 class, struct, enum, extension: Upper Camel Case 사용 # 콘솔로그 print, dump print : 단순 문자열 출력 dump : 인스턴스의 자세한 설명(description 프로퍼티)까지 출력 (streaming 을 이용해 파일로 로그 기록할 수 있다) # 문자열 보간법 \() "안녕하세요 제 이름은 \(name)입니다." # 변수(var)와 상수(let) var : 차후 값이 변경되는 변수 선언시 사용 let : 차후 값이 변경되지 않는 변수 선언시 사용 (TIP) // ` 사용하면 사용불가 한 변수명 사용가능해짐 var `class`: Str..

iOS 2020.10.26

[iOS] Nine-Patch, 둥근모서리 이미지 소스 사용하기

Nine-Patch? 아래 그림 한장으로 Nine-Patch에 대한 모든 설명이 가능하다. 나인패치를 사용하지 않는 이미지는 크기를 늘렸을 때, 위와 같이 모서리 부분도 같이 늘어난다. 나인패치를 사용하면, 이미지 사이즈가 변해도 모서리 부분을 유지할 수 있다. Android Asset Studio를 이용해 Nine-Patch 개념을 더 알아보자. (Android Asset Studio 사이트는 아래 링크 참고) 1. Stretch Region 나인패치는 이미지를 아래와 같이 9개의 영역(3x3)으로 나누고, 늘어나는 범위를 설정해 해당 영역만 늘어나도록 하면, 모서리 부분의 이미지는 유지한채 이미지를 늘릴 수 있다. (파란영역 : 유지되는 영역, 빨간 영역 : 늘어나는 영역) 2. Contents Pa..

iOS 2020.10.20

[iOS] Warning 없는 Clean Code 만들기 (SwiftLint, Pods file)

SwiftLint? Swift 스타일과 규칙을 적용하는데 사용하는 도구. 좀 더 깔끔한 소스(Clean Code)를 만들고 싶다면, 사용해보길 권한다. 적용 1. CocoaPod 설치 pod 'SwiftLint' 2. script 적용 Target > Build Phases > + > New Run Script Phase > Shell에 아래코드 추가 # 자동으로 소스 수정을 원하는 경우, 뒤에 autocorrect 를 붙이면 된다 ${PODS_ROOT}/SwiftLint/swiftlint autocorrect 3. Pods 파일은 SwiftLint 무시하도록 설정 Project Root 위치에 .swiftlint.yml 파일 생성 > 아래 소스 추가하기 disabled_rules: included: e..

iOS 2020.10.07

[iOS] RealmSwift 라이브러리 사용해보기

Realm? 오픈소스로 제공되는 모바일 데이터베이스 관리 라이브러리. 클래스 단위로 Table이 생성되고, 객체 단위로 row가 구성된다. RealmSwift 우선 pod 'RealmSwift', '5.3.3' 으로 Pods에 프레임워크 생성해주고, import RealmSwift 해서 쓰면 끝이다. 우선 Realm 상에 저장할 객체 클래스를 생성한다. 여기서 주의할 점은 Realm에서 column 형태로 사용하려면, @objc dynamic 을 반드시 붙여줘야 한다 class Cat: Object { @objc dynamic var name: String? @objc dynamic var color: String? @objc dynamic var gender: String? } 그리고 Realm 객체를..

iOS 2020.10.06

[iOS] RxSwift, ReactorKit를 이용한 MVVM 구조

RxSwift - 비동기 처리를 쉽게 처리할 수 있게 해주는 라이브러리. - 강력한 Operator. https://cocoapods.org/pods/RxSwift RxSwift RxSwift is a Swift implementation of Reactive Extensions cocoapods.org ReactorKit - 단방향 데이터 흐름을 가진 반응형 앱을 위한 프레임워크. https://cocoapods.org/pods/ReactorKit ReactorKit A framework for reactive and unidirectional Swift application architecture cocoapods.org (ReactorKit 기본 개념) * Action View에서 나타나는 Acti..

iOS 2020.09.25

[iOS] Xcode 업로드 오류 해결법 (App Store Connect 업로드 불가)

최근 MacOS 업데이트 후, Xcode로 Archive > Upload 과정을 거치고 있었다. 그런데 분명 App Store Connect로 Upload 성공이 떴는데 막상 App Store Connect에 가서 확인해보면 아래 사진처럼 빌드목록에 안보이다가 3.3.9 버전이 아예 사라지는 현상이 반복되었다. build 버전을 바꿔가며 여러번 업로드를 시도해봤지만 3.3.9가 App Store Connect에 뜨지 않는 현상이 발생했다. Transporter 앱을 이용해 ipa파일을 직접 App Store Connect에 올려 해결할 수 있었다. Transporter 사용법은 꽤 간단하다. (아래 참고) 1 Mac의 App Store에서 Transporter을 검색해 다운받고, Apple 개발자 계정으..

iOS 2020.09.21