본문 바로가기

iOS

(87)
[iOS] @discardableResult @ : Attribute 키워드 컴파일러에게 추가적인 정보를 알려주는 역할을 합니다. 1. 선언에 추가적인 정보를 제공하거나 2. 타입에 추가적인 정보를 제공합니다. // 1. 선언 @available(iOS 10.0) class MyClass { ... } // 2. 타입 func doSomething(completion: @escaping()->()) { ... } @discardableResult 함수의 리턴값을 활용하지 않는 경우에 사용합니다. 일반적으로 return값을 반환하는 함수를 선언하고 호출할 때, 이 값을 사용하지 않는다면 경고창으로 결과값을 사용하지 않는다고 알려줍니다. 이 때 @discardableResult 를 함수위에 써주면 "결과값을 사용하지 않아도 된다" 라고 컴파일러에게 정..
[iOS] UICollectionReusableView (diffable datasource) https://developer.apple.com/tutorials/app-dev-training/creating-a-progress-view Apple Developer Documentation developer.apple.com 오늘도 apple의 튜토리얼을 보고 정리한 내용입니다. 잘못된 내용이 있을 수도 있음을... 우선 UICollectionReusableView를 사용하는 이유가 무엇인지? - 아래처럼 Header를 만들어주기 위해서 - 스크롤될 때 삭제하지 않고 재사용 큐에 배치하기 위해서 어떻게 UICollectionReusableView를 사용해서 커스텀 헤더를 만들 수 있는지 한번 알아보겠습니다. UICollectionReusableView A view that defines the b..
[Swift] Copy-on-Write 최적화 코드 상에서 값을 복사해서 담는다 하더라도, 실제 값이 바뀌기 전까지는 하나의 메모리 값을 공유해서 사용한다. 메모리를 적게 차지하기 위해서 Swift 언어가 내부에서 처리하는 매커니즘 코드로 한번 살펴보겠습니다. var array = [1, 2, 3, 4, 5, 6] var subArray = array[0...2] subArray.append(7) subArray 배열을 생성할 때 array의 배열 [0...2] 부분을 대입했지만 이때 값의 복사가 아니라 동일한 메모리 공간을 가르키고 있게 됩니다. 그리고 값의 변경이 일어날 때 (여기서 append()) 값이 복사됩니다. Swift에서는 원시타입 구조체(Int, Double, String)와 Array, Set, Dictionary 등 컬렉션 구조체..
[iOS] UISegmentedControl https://developer.apple.com/tutorials/app-dev-training/filtering-reminders iOS App Dev Tutorials 를 공부하고 작성한 글입니다. UISegmentedControl A horizontal control that consists of multiple segments, each segment functioning as a discrete button. 여러 segment로 구성된 수평 컨트롤로, 각 segment는 개별 버튼으로 작동합니다. - 각 컨트롤은 제목 또는 이미지(UIImage)로 표시할 수 있다고 합니다. - UISegmentedControl 객체는 특정 width가 설정되어 있지 않은 한 super view 내에 비례적으..
[iOS] UISwipeActionsConfiguration https://developer.apple.com/tutorials/app-dev-training/adding-and-deleting-reminders Apple Developer Documentation developer.apple.com iOS App Dev Trutorials를 공부하고 적은 글입니다. 사진과 같이 UICollectionView (list) 에서 왼쪽으로 swipe 액션을 취했을 때 Delete 버튼이 나올 수 있도록 설정을 해줄겁니다. (Delete는 왼쪽 끝까지 swipe 하면 자동으로 실행됩니다 -> performsFirstActionWithFullSwipe: Bool) UISwipeActionsConfiguration The set of actions to perform wh..
[iOS] Realm의 특징 개인 프로젝트로 Realm을 사용하기 위해 특징과 알아보겠습니다. open source object database management system, initially for mobile operating systems (Android / iOS) 모바일에 특화된 오픈소스 객체 데이터베이스 관리 시스템입니다. Realm 특징 Realm은 NoSQL 입니다. Realm은 객체 중심 데이터베이스 입니다. → ORM 이 필요하지 않고 개발자에게 직관적입니다. iOS와 Android 간 DB 공유가 가능합니다. 코드로 작업할 수 있습니다. → SQL과 같은 중간 쿼리 언어를 사용하지 않습니다. 메인 스레드에서 읽기/ 쓰기를 할 수 있습니다. → 다중 쓰레드에서의 Realm 객체 관리가 어렵습니다. (쓰레드별 객..
[cocoapods] M1 mac cocoapods 설치 오류 해결 1. [ Finder - 이동 - 유틸리티 ] 에서 터미널 애플리케이션을 찾아준다. 2. 터미널 우클릭 - 정보 가져오기 - Rosetta를 사용하여 열기 클릭 (터미널 우클릭으로 복제 후 그 터미널에서 클릭해도 된다.) 3. 이전에 이것저것 건들였다면 brew cleanup -d -v 4. ffi 설치 sudo arch -x86_64 gem install ffi 5. cocoapods 설치 sudo gem install cocoapods 6. Rosetta 로 실행하기 끄기 pod init 후 pod install 을 하려면 arch -x86_64 pod install
[Swift] Int - quotientAndRemainder(dividingBy:) 문서에서 Int 의 Instance Method를 구경하던 도중 발견한 함수! 최근에 몫과 나머지를 사용한 문제를 종종 풀었는데 그때마다 직접 나누고 나머지를 따로 구했는데 한번에 구할 수 있는 함수를 알아두기 위해서 기록기록 func quotientAndRemainder(dividingBy rhs: Int) -> (quotient: Int, remainder: Int) let x = 1_000_000 let (q, r) = x.quotientAndRemainder(dividingBy: 933) // q == 1071 // r == 757 (몫, 나머지) 형태로 반환해준다. x 선언할 때 _ 을 쓰는건 처음본다.. 신기하니 기억해두자