iOS/개념 17

[iOS] vector 이미지를 쓰는 이유와 Bitmap 이미지의 1x 2x 3x가 뭔가요

개요 회사 입사 후.. ???: 제플린에서 애셋 다운은 이렇게 받으시면 됩니다~ 이미지 클릭 → pdf 클릭 & 저장 → Asset으로 옮기기 → Single Scale 설정 → Preserve Vector Data 체크 hyunndy: 넵 알겠습니다! 👩🏻‍🎨 . . . 지금까지 이렇게 아무 생각없이 asset을 넣고있다가 토이프로젝트 작업할 때 게임 UI 디자이너 친구에게 리소스를 부탁할 때 이런 대화가 있었습니다. hyunndy: Y야 이거 리소스 pdf형식으로 뽑아주라~ Y: 그래~ 근데 pdf?! 오 왜 pdf형식으로 써? 신기하다. hyunndy: ...(충격) 그렇습니다. 제가 또 얼레벌레 이유를 명확하게 설명하지 못하고 관습적으로 작업하고 있었던것입니다...(이마탁) 공부해보겠습니다. iO..

iOS/개념 2022.01.27

[iOS] TableView와 CollectionView의 reusable Cell

노션링크: https://acoustic-string-66e.notion.site/tableview-collctionview-cell-34dc8e520c594a7b9bc3860a873b1ea5 개요 UITableView, UICollectionView의 기본 사용방법은 다음과 같습니다. cell class를 tableView init단계에서 register 해준다. delegate에서 등록한 cell 클래스를 reusable로 만들어서 사용한다. cell 재사용에 관한 개념을 너무 대충 알고 사용하고있다는 생각이 들어 이 기회에 공부해보겠습니다. https://developer.apple.com/documentation/uikit/uitableview/1614878-dequeuereusablecell 해..

iOS/개념 2021.12.29

[iOS] iOS에서의 Thread, GCD, NSOperation

등장하는 개념들 정리한 포스트 참고해주세요~ https://hyunndyblog.tistory.com/177 iOS의 Thread Thread는 두 가지 종류가 있다. Main Thread Global Thread (= Background Thread) Main Thread iOS에서 Main Thread는 오직 한 개만 존재한다. → 나머지는 모두 Background Thread 개발자가 일반적으로 작성한 코드는 Main Thread에서 동작한다. 이유는 작성된 코드가 Cocoa에서 실행되는데, 이 Cocoa가 코드를 Main Thread에서 호출하기 때문이다. (※ Cocoa: OS X, iOS 애플리케이션을 개발할 때 사용하는 프레임워크를 모두 포함하는 개념) Main Thread는 interfac..

iOS/개념 2021.12.08

[iOS] Process, Thread, Task, sync, async, serial, concurrent 용어 정리

안녕하세요. GCD에 대해 정확히 알고있지 않은 것 같아서 공부를 하려고보니 얼레벌레 알고있던 용어들이 몇 개 있더군요. 멀티쓰레딩과 같이 많이 언급되는 개념들을 이곳저곳에서 모아 정리해보았습니다. 프로세스 개요 컴퓨터가 발전하면서 여러 프로그램이 메인 메모리에 적재되어 병행 실행되었다. 이런 변화는 컴퓨터의 효율을 높여주어지만, 프로그램에 대한 강력한 통제도 요구하기 시작했다. 이 때 프로세스라는 개념이 등장했다. 개념 프로세스란 간단히 실행중인 프로그램 이다. 이는 디스크에 저장되어 있던 응용 프로그램이 메모리에 적재되어 운영체제의 제어를 받는 상태를 말한다. 다시 말해, 해당 프로세스가 사용하고 있는 메모리 영역(자신의 주소공간)이 존재함을 의미한다. 프로세스는 메모리에 다음과 같은 주소 공간을 갖..

iOS/개념 2021.12.08

[iOS] UIScrollView 내부에 statusBar 높이만큼 inset이 들어가는 문제 - contentInsetAdjustmentBehavior

navigationBar 뒤에 scrollView를 넣어야 하는 요청이 들어와서 override func loadView() { super.loadView() self.view.insertSubview(self.scrollview, belowSubview: self.navigationBar) } navigationBar 뒤로 scrollView를 넣어주고, 안의 content들을 구성하려고 했는데! 무슨짓을 해도 statusBar 높이만큼 inset이 적용되는 이슈가 발생했습니다. 찾아보니 contentInsetAdjustmentBehavior 라는 프로퍼티가 있었습니다. scrollview의 content 영역에 safe area insets을 어떤 방식으로 적용할건지 결정하는 프로퍼티라고 하네요. h..

iOS/개념 2021.11.08

[Swift] UITouch vs UIGestureRecognizer

개요 회사에서 touch 관련 업무를 맡게되어 알아보던 중 swift에서 touch를 구현하는 방법에는 1. UITouch 2. UIGestureRecognizer 로 크게 두 가지가 있다는 걸 발견했습니다~! 따라서 이 둘을 어떻게 사용하고, 어떤 방식으로 동작하는지 알아보도록 하겠습니다. 1. UITouch developer.apple.com/documentation/uikit/uitouch Apple Developer Documentation developer.apple.com 스크린에서 발생하는 터치에 관한 location, size, movement, force 를 나타내는 객체 입니다. 사용자는 event handling을 위한 응답 객체인 UIEvent를 통해 touch 객체에 접근할 수 있..

iOS/개념 2021.03.07

[iOS] addTarget, @objc, #selector

개요 모바일 개발을 하다보면 버튼이 들어가는 뷰 작업을 굉장히 많이 하게 됩니다. 버튼을 눌렀을 때의 event 처리도 당연히 이어지는 작업 입니다. 버튼에 대한 event 처리는 크게 1. RxSwift의 subscribe 사용 2.@objc function 생성 후 addTarget으로 연결 이 두 가지 방법을 많이 사용하는데요. RxSwift에 대한 내용은 추후에 하나하나 다뤄보는것으로 하고, 오늘은 주로 간단한 event 처리에 주로 사용하는 (사실 읽기 더 편해서...) 2번 방법에서 사용하는 개념들에 대해 알아보겠습니다. let btnConfirm = UIButton() self.addSubview(btnConfirm) btnConfirm.then { $0.addTarget(self, acti..

iOS/개념 2021.02.07

[iOS] App States

App에는 5가지 App State가 존재합니다. App의 State가 변할 때 UIKit은 delegate 를 통해 개발자에게 이를 통지해줍니다. iOS 13 이상: UISceneDelegate가 scene-base app에서의 state 변화 통지 iOS 12 이하: UIApplicationDelegate 가 통지 Not Running 앱이 launch 되지 않은 상태를 말합니다. Foreground - InActive Foreground에서 running 되고 있지만, 사용자에게 Event는 수신하지 않는 상태를 말합니다. App이 inActive가 되는 시나리오는? 사용자의 입력을 App에서 받을 수 없는 상태. 전화, SMS 메세지, 시스템 메세지(배터리), 알림 등이 떳을 때 잠금 상태인 경우..

iOS/개념 2021.01.24

[iOS][업뎃중] iOS 주요 개념 정리

개요 회사에서는 프로젝트에 투입되어 이리저리 개발만 바쁘게 하게되는데요.. 그래서 블로그에는 좀 더 이론적인 내용들을 주로 기록해놔야겠다는 생각이 들었습니다. 앞으로 따로 글을 써야될 내용들은 링크로 달아두고, 간단한 답안은 여기 기록하면서 계속 업데이트해나갈 예정입니다. 1. App Id / Bundle Id App Id 하나의 developer Team에서 개발한 하나 혹은 다수의 App 들을 식별하기 위한 문자열. Team ID(애플에 의해 제공) + Bundle ID(개발자에 의해 제공) 이 합쳐진 문자열로 되어있으며, 하나의 개발 팀에서의 앱들을 구분짓기 위해 사용된다. Bundle Id 각 App 마다 가진 고유의 식별자. development process 동안 개발자는 app을 식별하는 많..

iOS/개념 2021.01.24