본문 바로가기

ios34

UIResponder 모든 ViewController의 상위클래스는 UIViewController! UIViewController의 핵심적인 상위 클래스는 UIResponder! 네 그래서 이번엔 UIResponder를 공부해보려구요❗️ 먼저 UIViewController가 뭐냐 간단히 말하면, 앱에서 View 계층을 관리하는 객체입니다. ViewController의 주요 역할을 살펴보면 아래와 같습니다. 데이터의 변경에 대한 응답으로 View의 콘텐츠를 업데이트합니다. View들을 통해 유저와 상호작용합니다. View의 사이즈를 정의하고 전체적인 인터페이스 레이아웃을 관리합니다. 앱의 다른 ViewController 같은 다른 뷰 객체들과 상호작용합니다. 이런 UIViewController는 UIResponder 객체로써 .. 2021. 4. 16.
첫 테스트코드를 작성해보다. 제가 처음 테스트코드를 작성해보고 난 후의 개인적인 생각을 정리해보고 싶어서 이렇게 글을 쓰게 되었습니다. 아래 테스트코드의 장점이나 TDD에 대한 내용은 다른 블로그의 내용을 좀 더 참고해서 적었습니다! 이전에 TDD에 대해 알게 된 이후 언젠가는 TDD를 꼭 적용해보고 싶다는 생각이 있었습니다. TDD까지는 아니더라도 최소한 테스트코드는 한 번 작성해봐야지 생각했었어요. 하지만 시간에 쫓긴다는 핑계와 이것 말고도 할 게 많다는 핑계로 계속 미루고 미루고 있었습니다. 저는 최근 스타트업과 iOS 프로젝트 하나를 계약해서 하고있는 중인데, 지금 기획만 어느정도 되어 있는 상태고 디자인과 서버 개발은 아직 들어가지 않은 상태입니다. 서비스를 본격적으로 개발하기 전에 디자인과 서버 개발이 이루어져야 하는 현.. 2021. 4. 14.
키체인 (Key Chain) 아이폰 유저라면 한 번쯤은 키체인 로그인을 사용해봤을 것 같습니다. 저는 이번 동아리 프로젝트에서, 그리고 스타트업과 계약해서 진행하고 있는 다른 프로젝트에서 자동로그인 기능을 구현해야하는 상황이 생겼는데요! 사실 자동로그인이라길래 처음에는 로그인 후 받은 token을 저장하거나, 아이디와 비밀번호를 UserDefaults로 저장해서 사용하면 되는건가? 하고 생각했는데, 그렇게 하면 거의 뭐 보안이 💩..ㅋㅋㅋ UserDefaults는 데이터를 있는 그대로 저장하기 때문에 개인정보를 UserDefaults로 저장하게 되면 정말 보안이 취약해집니다!!! 그렇다고 개인정보를 직접 암호화해서 저장하기에는 많이 복잡해지죠ㅠㅠ 그래서 키체인을 사용하려합니다 키체인은 암호화된 데이터베이스로써, 사용자의 Mac, 앱.. 2021. 4. 13.
GCD (Grand Central Dispatch) iOS의 중요한 개념 중 하나인 GCD!! GCD가 뭘까요? GCD는 Grand Central Dispatch 의 줄임말입니다. GCD에 대해 자세하게 알아보기 전에 왜 GCD가 나오게 됐는지, 그 배경부터 살펴보겠습니다. 멀티 코어 프로세서에서는 프로그램의 동작을 멀티 프로세서에게 어떻게 잘 배분하는지가 중요합니다. GCD 이전에는 멀티 스레딩을 위해 Thread와 OperationQueue 등의 클래스를 사용했다고 하는데요, Thread는 복잡할 뿐만 아니라 임계 구역 (Critical Section) 등을 이용한 Lock을 관리하기 까다로웠습니다. 그리고 OperationQueue는 GCD에 비해 무겁고 Boilerplate Code들이 많이 필요한 문제가 있었죠. 그래서 Apple은 GCD를 내놓.. 2021. 3. 23.
XCTest tips and tricks that can level up your Swift testing iOS에서의 Unit Test를 위해 XCTest에 대해 알아보던 중 XCtest tips and tricks that can level up your Swift testing 이라는 블로그를 보게 되었습니다. XCTest에 대한 내용과 참고 게시물의 내용을 함께 번역 및 정리해보면 좋을 것 같았습니다. 중간중간 제가 이해가지 않는 tip들은 직접 예시코드를 작성해보면서 이해해보려고 노력해봤는데, 아직까지는 좀 더 학습이 필요한 것 같아요 :) 그럼 먼저 XCTest가 무엇인지부터 알아볼까요? What is XCTest? 먼저 애플에서는 XCTest에 대해 이렇게 말하고 있습니다. Create and run unit tests, performance tests, and UI tests for your X.. 2021. 3. 3.
Frame과 Bounds iOS 개발을 하다보면 거의 무조건 접하는 것 중 하나가 바로 frame과 bounds입니다. 저는 사실 frame과 bounds가 어떤 차이가 있는지 잘 모르고 사용했는데, 모르고 사용하니까 너무 답답하더라구요. 네, 그래서 알아봤습니다! 먼저 Frame과 Bounds가 애플에서는 뭐라고 정의되고 있는지 한 번 볼게요. Frame The frame rectangle, which describes the view's location and size in its superview's coordinate system. 👉Frame은 SuperView(상위뷰)의 좌표 시스템 안에서의 View의 위치와 사이즈를 나타냅니다. Bounds The bounds rectangle, which describes the .. 2021. 2. 26.
YAPP 18th 활동 시작 대학생 기업형 연합 IT 동아리 YAPP YAPP은 대학생들의 다양한 아이디어와 열정, 그리고 가능성을 바탕으로 조그마한 변화일지라도 의미가 있는 일을 해나가고, 기존에 없던 새로운 가치를 만들기 위해 노력하는 대학생 기업형 IT동 yapp.co.kr 2020년 8월~12월동안 YAPP 17기로 활동한 이후, 원래부터 하고싶었던 iOS개발을 12월 말부터 공부하기 시작했습니다. 벌써 졸업인 데다가, 취업을 준비해야하는 시기에 이제 막 iOS 공부를 시작한다는게 늦은 건 아닐까 생각하다가도.. 나중에 분야를 바꾸는 것보다는 빠르겠지 하는 생각이 들었어요. 그리고 이렇게 계속 미련가지고 있을 바에는 지금이라도 시작해보는게 늦지 않을 것 같다는 생각이 들었습니다😂 저는 2020년 12월 말에 부스트코스를 통해.. 2021. 2. 10.
D&D(DND) 4th 활동 시작 DND 프로젝트에 즐거움을, 모두에게 기회를 dnd.ac iOS를 처음 공부하기 시작한지 3일이 되던 날, IT 연합 동아리 D&D에 iOS 개발자로 지원하게 되었습니다. 그만큼 iOS와 관련해서 내세울 것도 없었고, 내가 보여줄 수 있는 건 지금까지 했던 안드로이드 활동과 블로깅 활동 뿐이라서 사실 기대는 크게 하지 않았어요. 하지만 어떻게 된 일인지 200명 중 40명 안에 제가 들게 되었고, 활동을 하면서 느낀건 DND는 정말 초보 개발자들도 잠재력과 열정만 있다면 선발해서 프로젝트를 할 수 있게끔 해주는 동아리인 것 같았어요. + (3/15) 참고로 DND는 아직 신생동아리에 속해서 면접 없이 서류만 봅니다. 하지만 동아리가 생긴지 얼마 안된 것에 비해 정말 훌륭한 분들이 멘토로 계십니다. 다만,.. 2021. 1. 3.
ARC (Automatic Reference Counting) iOS 개발을 공부하면서 꼭 알아야할 것 중 하나인 ARC (Automatic Reference Counting). 도대체 ARC가 뭘까요? 먼저, 앱의 성능을 유지하기 위해서는 메모리 관리가 필수적입니다. Stack 메모리에 저장된 데이터는 자동으로 제거되기 때문에 특별한 관리가 필요 없지만, Heap 메모리는 개발자가 동적으로 할당하는 메모리 공간이기 때문에 Heap 메모리에 저장된 데이터는 필요하지 않은 시점에 직접 제거해야만 합니다. 따라서 메모리 관리 모델은 Heap에 저장된 데이터를 관리합니다. [ 참고 ] Value Type은 Stack 메모리에, Reference Type은 Heap 메모리에 저장됩니다. Value Type: Structure, Enumeration, Tuple.. Refe.. 2020. 12. 22.
강한 순환 참조 / 강한 참조 사이클 (Strong Reference Cycle) STRONG REFERENCE CYCLE Strong Reference Cycle (강한 순환 참조)란 무엇을 말할까요? 저는 iOS 개발을 공부하면서 iOS와 관련된 게시글이나 정보를 찾다보면 메모리 관리에 관한 이야기가 정말 많다고 생각이 들었습니다. 그리고 이 게시물에서 다뤄볼 강한 순환 참조도 메모리와 관련되어 있습니다. 그래서 오늘은 강한 순환 참조에 대해서 아래 예시와 함께 살펴보겠습니다. 먼저, 아래 코드와 같이 Person과 Car이라는 클래스가 있다고 가정합시다. 그리고 Person class는 Car 속성을, Car class는 Person 속성을 가지고 있습니다. class Person { var name = "Jamie" var car: Car? } class Car { var mo.. 2020. 12. 20.