전체 글

iOS

[iOS] UITableView 예제 코드 만들기 1

지난 시간에 봤던 UITableViewDelegate와 UITableViewDataSource를 직접 사용해 UITableView로 아주 간단한 목록 화면을 만들어보자. 우선 테이블 뷰를 사용하기 위해 UITableView를 ViewController에 하나 넣고, Constraints를 잡아주었다. 그리고 테이블 뷰의 인스펙터 가장 마지막 탭에 있는 dataSource와 delegate를 viewController에 연결해준다. (ViewController의 코드 내부에서 해줘도 되지만 그냥 이렇게 UITableView 넣었을 때 바로 연결해주는 게 마음이 편하다) 이렇게 연결해준 뒤에는 ViewController 클래스에서 UITableViewDataSource와 UITableViewDelegate ..

iOS

[iOS] UITableView 알아보기 (2) - UITableViewDelegate, UITableViewDataSource

UITableViewDelegate tableView를 사용하면서 관리해야 하는 부분들에 대한 메서드들을 protocol로 분리해두었다. tableView를 사용하는 곳에서 UITableViewDelegate를 채택한 후 필요한 메서드를 구현해야 한다. UITableViewDelegate에 있는 메서드들은 tableView에서 다음과 같은 항목을 컨트롤해야 할 때 사용된다. Custom header와 footer view를 생성하고 관리할 때 row, header, footer의 높이를 관리하고 싶을 때 더 나은 스크롤링을 위해 height estimate를 제공하고 싶을 때 Indet row content (행 들여쓰기?) row를 선택했을 때 해야 하는 동작들을 관리하고 싶을 때 row를 선택하는 것..

iOS

Apple Developer Documentation에서 API Changes 확인하기

요즘 다시 iOS 개발 공부를 하면서 Apple Developer Documentation을 더욱 자주 보게 되었다. 예전에는 그냥 대충 구글링으로 다른 분들이 번역해주신 거나 스택오버플로우를 많이 찾아봤었는데, 차라리 공식 문서를 내가 스스로 공부하면서 정리하는 게 훨씬 머릿속에 오래 남을 것 같아서 공식 문서 사이트를 자주 들락거린다. 문서를 보다가 API Changes가 있길래 뭐지? 하고 눌러봤는데 아래와 같은 창이 나타났다. Xcode 버전에 따라 어떤 게 어떤게 변경됐고 어떤 게 새롭게 추가되었는지 확인할 수 있다. 각 색에 맞게 표시가 되어서 확인하기 아주 편리하다. Xcode 버전을 올릴 때마다 기존에 구현된 코드들 중 deprecated 된 메서드가 있는 경우 warning이 엄청나게 나..

iOS

[iOS] UITableView 알아보기 (1) - UITableView, UITableViewCell이 뭐야?

UITableView에 있는 delegate와 datasource 연결하는 것부터 UITableViewCell을 xib로 만들어서 쓰는 것, tableview section과 description 등등 이것저것 매번 구현할 때마다 까먹고 또 찾아서 확인하는 게 귀찮아서 정리하는 포스팅입니다. UITableView는 뭘까? UITableView는 여러 데이터를 행으로 나타내고 싶을 때 사용한다. 수직 스크롤을 통해 위아래로 이동할 수 있고 이동할 때마다 tableview에서 노출해야 하는 데이터를 노출해준다. 아이폰 기본 앱에서 찾아본다면 메시지, 연락처, 설정 화면은 tableView로 구현되어있을 것 같다. tableView는 사용자가 확인해야 하는 데이터를 행으로 노출하기 위해 UITableViewC..

Swift

[iOS] Swift Deinitialization 알아보기

앞에서 Initialization을 알아봤으니 이번엔 Deinitialization을 공부해야겠다. Deinitialization. 앞에 De가 붙은 것에서 유추할 수 있듯이 Initialization의 반대 개념이다. 인스턴스가 메모리에서 해제될 때 호출되는 친구인데, 키워드는 deinit을 사용한다. 하지만 Init과 다르게 deinit은 클래스에서만 사용할 수 있다. How Deinitialization Works Swift에서는 인스턴스 메모리 관리를 ARC(Automatic Reference Counting)를 체크해서 하기 때문에 인스턴스가 더이상 필요하지 않다고 판단될 때 자동으로 deallocate 된다. 자동으로 해결되는데 도대체 왜 Deinit이 필요한가? 요거는 내가 인스턴스 소멸 전..

Swift

[iOS] Swift initialization 알아보기 (4) - Failable Init

드디어 initialization 문서의 마지막을 정리하는 포스팅이다. 이번 포스팅에서는 Faliable Initializer, Required Initializer를 정리한다! Failable Initializers 클래스나 구조체, enum은 유효하지 않은 파라미터가 들어오는 경우 초기화에 실패할 수도 있다. 실패할만한 조건이 들어올 때 초기화를 하지 않도록 하기 위해서는 init? 키워드를 사용해서 초기화 메서드를 작성한다. 대신 같은 파라메터와 이름을 가진 failable / nonfailable 초기화 메서드는 함께할 수 없다고 한다. (아래와 같은 에러가 난다) 위에 작성한 failable init 메서드를 보면 알 수 있듯이 초기화에 필요한 조건을 만족하지 않는 경우는 nil을 리턴 시키면 ..