iOS
-
[Swift] ARC 알아보기 (Auto Reference Counting)iOS/Swift 2020. 9. 4. 16:29
안녕하세요:) 오늘은 Swift의 메모리 관리 기법인 ARC에 대해 알아보겠습니다. 프로젝트를 진행하다 보니, 기능이 많고 변수들도 많아서 메모리 관리에 신경이 쓰이는 순간이 왔습니다. 그래서 Swift는 메모리 관리를 어떻게 하고 있는지 알아보도록 하겠습니다. 메모리 관리를 왜 해야 할까? 우선 본격적으로 메모리 관리에 대해 알아보기 전에, 왜 알아야 하는지부터 짚고 넘어가겠습니다. 앱의 성능을 유지하기 위해 메모리 관리와 유지는 기본입니다. 메모리 관리가 제대로 일어나지 않으면 Memory Leak, Dangling Pointer 등의 문제가 발생할 수 있습니다. Memory Leak: 사용되지 않는 데이터가 메모리 공간을 차지하고 있는 현상 Dangling Pointer: 이미 메모리 할당이 해제된..
-
[iOS] 테이블 뷰 셀 안에 컬렉션 뷰 넣기iOS/EARLY BUDDY | iOS 2020. 8. 28. 13:14
안녕하세요 :) 이번 포스팅은 얼리버디 프로젝트에서 절 힘들게 했던 가로 경로를 구현한 과정을 적어보려고 합니다. 구현할 뷰 위의 뷰를 구현할건데요. 저 뷰가 테이블 뷰 셀이에요..ㅠ 셀 안에 가로로 된 경로를 넣으려면 저는 컬렉션 뷰로 하는 게 재사용하기 편할 것 같다는 생각이 들어서 컬렉션으로 구현을 했습니다. TableViewCell 다른 뷰에서도 똑같은 셀이 사용되기 때문에 nib로 구현을 했습니다. 이런 식으로 테이블 뷰 셀을 그리고 하단에 컬렉션 뷰를 넣었습니다. CollectionViewCell 이번에는 컬렉션 뷰 셀을 살펴볼건데요. 저는 도보 부분의 셀과 교통수단 부분의 셀 두 개를 만들었어요. 위의 셀이 도보 부분 셀이고 아래 셀이 대중교통 부분 셀입니다!! UITableViewCell...
-
[iOS] Cell LifeCycle (UITableView, UICollectionView)iOS/iOS 2020. 8. 28. 02:28
안녕하세요 :) 오늘은 Cell의 LifeCycle에 대해 알아보려고 합니다. 항상 iOS 프로젝트를 하면 테이블 뷰, 컬렉션 뷰를 사용하는 것이 제일 까다롭더라고요! (저만 그런가요..) 컬렉션 뷰와 테이블 뷰 셀들의 라이프 사이클을 알아봅시다 !! UITableViewCell LifeCycle 우선 간단한 테이블 뷰를 만들어보겠습니다. 위와 같이 간단한 형태의 테이블 뷰를 만들었습니다. 그러고 나서 Cell들의 Cycle에 해당하는 Delegate, DataSource들을 구현해서 하나씩 찍어보려고 합니다. extension ViewController: UITableViewDelegate { func tableView(_ tableView: UITableView, willDisplay cell: UI..
-
[iOS] FMDB를 사용한 최근 장소 검색 기능 구현iOS/EARLY BUDDY | iOS 2020. 8. 15. 23:39
안녕하세요 :) 저번 포스팅에서는 FMDB를 사용한 간단한 것들을 알아봤는데요. 얼리버디에 그대로 도입하기에는 몇 가지 이슈들이 있었습니다. 검색어를 저장할 때 중복 체크 기능이 없음 검색했던 이력이 있는 주소들은 테이블 뷰 제일 상단으로 올라오지 않음 최근 검색한 순서대로 테이블 뷰에 뜨지 않고 데이터베이스 테이블에 저장된 순서대로 뜸 위의 세 가지들이 고쳐야 할 이슈들이었습니다. 이제부터 이슈들을 차곡차곡 고쳐나가 보겠습니다! 검색어 저장 시 중복 체크 기능 제가 구현해야 하는 기능은 중복된 검색어가 들어왔을 경우에 제일 상단으로 텍스트가 올라가야 하는 것입니다. 그래서 저는 테이블에 Location과 Time을 insert 해주고, 만약 중복된 텍스트가 들어올 경우에는 Time 부분만 update ..
-
[iOS] FMDB 사용하기iOS/EARLY BUDDY | iOS 2020. 8. 14. 15:58
안녕하세요 :) 오늘은 얼리버디 어플에 최근에 검색한 주소 저장 부분을 FMDB를 사용해서 구현해보려고 합니다. FMDB란? FMDB는 SQLite를 Object-C로 감싼 것입니다. 즉, XCode에서 코드로 SQLite를 사용할 수 있게 해주는 것입니다. FMDB 사용 설정 우선, FMDB Github에 들어가면 Cocoapod으로도 설정을 할 수 있다고 합니다. 저는 클론 받은 후에 fmdb 폴더를 직접 옮긴 방법을 사용했습니다. 첫 번째로 프로젝트에 프레임워크를 추가해줍니다. 프로젝트의 Build Phases -> Link Binary With Libraries에 + 버튼을 누르고 sql을 검색하면 sqlite가 두 개가 검색됩니다. 둘 중 아무거나 Add 해주시면 sqlite 프레임워크가 추가됩..
-
iOS의 데이터베이스 비교 (SQLite, Core Data, Realm)iOS/iOS 2020. 8. 7. 12:12
안녕하세요 :) 얼리버디 프로젝트에서 내장 데이터베이스를 사용할 일이 생겨서 찾아보던 중 iOS의 대표적인 데이터베이스에 대해 비교/정리를 하게 되었습니다! 바로 시작할게요 ~! Realm Realm이란, 오픈 소스 라이브러리로 모바일에 최적화된 데이터베이스 라이브러리입니다. (iOS와 Android를 위해 만들어졌습니다.) 데이터 컨테이너 모델을 사용하며 데이터 객체는 Realm에 객체로 저장됩니다. 즉, 객체 중심의 데이터베이스라는 것입니다. Realm은 ORM이 아닙니다. 따라서 백그라운드에서 적용되는 SQL 쿼리문을 실행하지 않습니다. ORM은 데이터를 접근하는 간단한 업무도 많은 쿼리문의 작업이 필요합니다. CPU 사이클과 디스크 시간을 소비하며 속도가 한순간에 느려질 수 있습니다. Realm은..
-
[iOS] Coordinator Pattern 적용iOS/EARLY BUDDY | iOS 2020. 7. 31. 22:21
안녕하세요! 오랜만의 포스팅입니다 :-) SOPT라는 동아리에서 Appjam을 진행했던 '얼리버디' 서비스를 다시 갈아엎는 과정을 하고 있는데요! 아무래도 앱잼은 2주 동안 빠르게 프로젝트를 완성하는 장기 해커톤이다 보니 그때의 프로젝트를 다시 열어보면 제가 개발했지만 도저히 뭐가 뭔지 모르겠더라고요.. 폴더링도 나름대로 했지만 너무너무 파일이 많고! 패턴이라고는 하나도 없는 그런 상태였습니다. 얼리버디 서비스는 navigation이 거의 주를 이루고 있어서 ViewController의 책임이 아주 무거웠는데요. ViewController을 가볍게 만들고 쉽게 navigation 처리를 해주기 위해서 저는 디벨롭 과정에서 Coordinator 패턴을 적용하기로 마음먹었습니다! 우선 Coordinator ..
-
CoreLocation 적용하기iOS/iOS 2020. 6. 20. 07:18
안녕하세요! 오랜만에 글을 씁니다 하하 XD 오늘은 유저의 위치를 Core Location을 사용해서 적용해 서버랑 통신을 진행할 건데요. 쭉 진행해보겠습니다!! Core Location 네. 개발자 문서에는 이렇게 적혀있네요. Core Location은 주변 아이비컨과 디바이스의 지리적 위치를 제공하는 프레임워크라고 합니다. 프로젝트의 Core Location가 처음으로 실행된다면 gps를 허용 여부에 관한 알림 메시지를 띄워야 합니다. CLLocationManager CLLocationManager 클래스는 위치 관련 이벤트를 앱에서 시작하고 중지하는 데 사용하는 오브젝트입니다. CLLocationManagerDelegate CLLocationManagerDelegate 프로토콜은 location m..