iOS/Swift 19

Swift) TableView Swipe

TableView Swipe 삭제나 편집을 위한 이벤트를 Swipe를 통해 구현해보자 TableView의 leadingSwipeActionsConfigurationForRowAt, trailingSwipeActionsConfigurationForRowAt 활용 |왼쪽으로 Swipe|여러 개의 item| |:---:|:---:| ||| 왼쪽 Swipe 적용 코드 TableView leadingSwipeActionsConfigurationForRowAt를 통해 해당 셀에 대한 이벤트를 구현할 수 있었다. func tableView(_ tableView: UITableView, leadingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeA..

iOS/Swift 2022.08.20

Swift) Localize

LocalAccessbility 적용하는 방법 스토리 보드 Project -> info -> + -> 원하는 나라 추가 그렇게 되면 Main.storyboard 하위 목록에 파일이 추가 됩니다. Object ID 확인 후 해당 나라의 언어 입력 코드 Localizable.strings 파일 생성 Localize.. 버튼 클릭 후 원하는 나라 선택 스토리 보드 1번과 동일한 과정 진행 “key” = “value”; 형태로 작성 "key"는 원본 데이터 ex) 기본 값이 “Hi” 한국어 “안녕” -> “Hi” = “안녕”; 비교 영어 한글

iOS/Swift 2022.08.18

Swift) UIRefreshControl 사용

위로 당겨서 새로고침 프로젝트 진행하면서 서버 데이터들이 업데이트가 될 수도 있기 떄문에 바로 바로 확인하기 위해서 새로고침 기능이 필요하다고 느껴서 구현해 보았습니다. 필요한 것 UIRefreshControl 인스턴스 생성! let refreshControl = UIRefreshControl()UIRefreshControl 이란?? 공식문서 설명으로 "스크롤 보기의 내용 새로 고침을 시작할 수 있는 표준 컨트롤" 이라고 되어 있습니다. 무슨 뜻인가 생각해보니 아래 사진을 보고 이해했는데 또한 공식문서 내용 중 "You use that notification to update your content and dismiss the refresh control." -> 해당 알림을 사용하여 콘텐츠를 업데이트하..

iOS/Swift 2022.08.03

Swift) iOS 메모리 영역 확인하기(Stack)

메모리 영역 확인해보자 (Stack) 메모리 확인 순서 LLDB에서 원하는 프로퍼티의 메모리 주소를 알아낸 다음.. 터미널창에서 Stack에 메모리 할당 영역을 확인 해보자 LLDB에서 메모리 확인하는 법 po withUnsafePointer(to: &(변수명)){$0}터미널창에서 Stack 메모리 할당 영역 확인 하는 법 vmmap (프로젝트PID) | grep Stack실제로 메모리 확인 해보자!! 프로젝트 PID 확인 LLDB에서 메모리 주소 확인 터미널에서 Stack 메모리 할당 영역 확인 확인 해보니 3개의 프로퍼티 str1, str2, classA는 Stack 영역 안에 있는 것 같다.? 의문점 classA는 Class를 인스턴스화 해주었는데 Stack 영역에 저장되는 것 같다?? 터미널에서 ..

iOS/Swift 2022.07.25

Swift) 네트워크와 무관한 URLSession Unit Test를 하는 목적

유닛 테스트란?? 유닛 테스트는 컴퓨터 프로그래밍에서 소스 코드의 특정 모듈이 의도된 대로 정확히 작동하는지 검증하는 절차. 즉, 모든 함수와 메소드에 대한 테스트 케이스(Test case)를 작성하는 절차를 말함 unit test 는 작성한 프로그램이 의도한 대로 동작하는지 검증하는 가장 작은 단위의 테스트 이를 통해서 각 모듈(클래스, 메소드)들이 잘 동작하는지 확인할 수 있음. 왜 필요할까?? 굉장히 비효율적이지 않나.? 유닛 테스트를 하는 이유 각각의 모듈을 부분적으로 확인할 수 있어 어떤 모듈에서 문제가 발생하는지 빠른 확인이 가능 전체 프로그램을 빌드하는 대신 유닛 단위로 빌드해 확인하므로 시간 절약 어떻게 작성하는가?? 각 테스트 케이스는 서로 분리되어야 하므로(isolated), 가짜 객체..

iOS/Swift 2022.07.23

Swift) CollectionView란??

Collection View가 멀까?? 공식문서 데이터 항목의 정렬된 컬렉션을 관리하고 사용자 지정 가능한 레이아웃을 사용하여 표시하는 개체 입니다. Collection View는 데이터의 나열이 자유롭다.. UICollectionViewLayout 객체를 상속받아서 나만의 레이아웃 설정 가능 → 가장 일반적인 용도는 데이터 아이템을 그리드와 같은 형태로 표현.. 그래도 다양한 방법으로 컬렉션뷰의 레이아웃을 사용자 정의할 수 있습니다. -> 리스트형으로도 바꿀 수 있다는 얘기? UICollectionViewLayout이란?? 컬렉션 뷰의 레이아웃을 전문적으로 관리하는 객체 컬렉션 뷰 셀 냉장고 속에 있는 반찬통이라고 생각 하자 데이터 아이템을 화면에 표시합니다 하나의 셀은 하나의 데이터 아이템을 화면에 ..

iOS/Swift 2022.07.23

Swift) @Escaping 클로저란??

@Escaping 클로저란?? @escaping 속성은 인자값으로 전달된 클로저를 저장해 두었다가, 나중에 다른 곳에서도 실행할 수 있도록 허용해주는 속성 인자값으로 전달되는 클로저의 특성 스위프트에서는 함수의 인자값으로 전달된 클로저는 기본적으로 탈출불가(non-escape)의 성격을 가짐 함수 내에서 직접 실행을 위해서만 사용 → 이 떄문에 함수 내부라 할지라도 변수나 상수에 대입 불가 만약 변수나 상수에 대입하는 것을 허용한다면 내부 함수를 통한 캡처(Capture)기능을 이용하여 클로저가 함수 바깥으로 탈출할 수 있기 때문 여기서 탈출이란?? 함수 내부 범위를 벗어나서 실행되는 것을 의미 @escaping 속성을 추가하게 되면 위의 제약 조건들이 모두 제거됨 이 속성은 인자값에 설정되는 값이므로 ..

iOS/Swift 2022.07.14

Swift) 클로저가 멀까??

클로저 클로저란?? 사용자의 코드안에서 전달되어 사용할 수 있는 로직을 가진 중괄호 "{}"로 구분된 코드의 블록, 일급 객체의 역활을 수행 참조 타입이다 함수는 클로저의 한 형태로, 이름이 있는 클로저!! 일급객체?? 일급 객체는 전달인자를 보낼 수 있고, 변수/상수 등으로 저장하거나 전달할 수 있으며, 함수의 반환값으로도 될 수 있다. 클로저 표현 방식 { (인자들) -> 반환타입 in 로직구현 } 그럼 클로저를 쓰는 이유가 멀까?? 코드를 효율적으로 작성하는데 도움을 주기 떄문에 대표적으로 두가지가 있을 수도 있겠다. 고참함수 인풋으로 줄 함수를 따로 만들어 사용할 순 있지만 고차함수를 사용하는 그 자리에서 바로 클로저를 만들어 인풋을 줄 수도 있다. 이때 클로저를 사용한다. 고차함수?? 인풋으로 ..

iOS/Swift 2022.07.13

[디자인패턴] Delegation

Delegation가 무엇일까?? 클래스나 구조체가 책임을 일부 다른 타입의 인스턴스로 전달 할 수 있게 하는 디자인 패턴. 그래서 Delegation이 뭐야?? 너가 해야할 일을 대신 해줄게!! 구현하기 위해 필요한 것들에 대해서 생각해보자 프로토콜 - 대리자가 수신자에게 전달할 내용의 규칙 수신자 - 대리자에게 넘기는 곳 대리자 - 수신자를 대신해서 처리할 대상 왜 사용할까?? Delegation 패턴은 역활에 대한 책임을 간결하게 표현하기 위해 각각에 대한 책임을 설정해주는 디자인 패턴. Example Delegation code protocol WorkDelegate { func drinkCoffee() } class Boss: WorkDelegate { func drinkCoffee() { pr..

iOS/Swift 2022.06.14