본문 바로가기

iOS/Swift71

[Swift] UITableView, UICollectionView Last IndexPath TableView 마지막 인덱스 private extension UITableView { func lastIndexPath() -> IndexPath { let section = max(numberOfSections - 1, 0) let row = max(numberOfRows(inSection: section) - 1, 0) return IndexPath(row: row, section: section) } } CollectionView 마지막 인덱스 private extension UICollectionView { func lastIndexPath() -> IndexPath { let section = max(numberOfSections - 1, 0) let row = max(numberOfItem.. 2023. 12. 5.
[iOS] View Drawing Cycle (Layout까지 작성함) 혼자 그냥 멍때리는데 View를 그리며 문제 생겼던 부분들이 어떤 것이 있었을까 하고 고민하다가 그냥 심심해서 구글링하며 커스텀 뷰 이쁘장하게 되있는건 어째 구현했을랑가싶어서 구경 좀 했다. 근데 생각해보니 이쁘장한 커스텀뷰를 만들 때 뷰가 어떻게 그려지는 지에 대해 대충은 알고 있는데, 좀 깊이 살펴보며 포스팅한 것은 없는 것 같아서 공부할 겸 씀 우선 뷰가 어떻게 그려지고.. 어떻게 업데이트되며.. 레이아웃을 어떻게 잡는지에 대해서 이해하려면 Main RunLoop에 대해서 이해해야 한다고 한다. ㅇㅇ 그런가보다 하고 공부하믄되것지 뭐~~ Main RunLoop 별개로 우선 알아야 할 것은 내가 밑에서 설명할 RunLoop는 Main Thread에서 돌고있는 놈이다. 얘는 자동으로 돌고 있지만, 다른.. 2022. 8. 7.
[Xcode] 단축키 좀 써주세요... 내가 죽어라고 쓰는 것만 좀 모아봤다. 코드 관련 ⌘ + 방향키 - 줄의 맨 끝단으로 이동 ⌘ + ⇧ + 방향키 - 커서 위치로부터 줄 끝까지 선택 ⌥ + 방향키 - 단어(띄어쓰기 기준) 단위로 이동 ⌃ + i - Indent 정렬 ⌘ + / - 주석 ⌘ + "-" - Zoom out ⌘ + "+" - Zoom in ⌘ + ⌃ + 0 - Zoom Reset ⌘ + 클릭 - 액션 메뉴 ⌥ + 클릭 - Quick Help ⌘ + ⌃ + 클릭 - Definition으로 이동 ⌘ + ⌃ + E - 이름 한꺼번에 바꾸기 ⌃ + ⇧ + 클릭 - 여러 줄 선택하여 동시에 수정 Navigator ⌘ + 0 - Navigator 보이기 / 숨기기 ⌘ + 1 ~ 9 - Navigator 메뉴 순서대로 (Navigator .. 2022. 8. 6.
[Swift] defer 음... 잠이 안와서.. 간단히 defer.. defer가 무엇이냐? 함수가 종료되기 전에 실행되야 할 코드를 작성하는 블럭을 의미한다. 예를 들면.. func config() { // config code.. // after complete config code.. defer { print("complete!") } } 이런 식이다. 이리 간단해보이는 defer는 중첩이 가능한데 이 때 defer 블럭 실행 순서가 중요하다. defer는 Stack 방식으로 동작하여(LIFO) 선언된 역순으로 호출된다. func test() { defer { print("test 1") } do { defer { print("test 2") } print("test 3") } for i in 0.. 2 그리고 다음 블럭.. 2022. 6. 10.
[Swift] mutating 2021.08.11 - [iOS/Swift] - [Swift] Struct Mutating [Swift] Struct Mutating Struct Mutating 구조체의 메소드를 구조체 내부에서 데이터 수정 할 때는 Mutating 키워드를 선언 해주어야함 struct coordinate { var x: Int = 0 var y: Int = 0 mutating func moveTo(x: Int, y: Int) { sel.. limjs-dev.tistory.com ㅋㅋㅋㅋㅋㅋㅋㅋ좀 더 알아보고 쓰지 새끼야... 다시 간단히 정리하려고 씁니다.. 아니 이전에 쓴 것도 맞긴한데.. 동작 방식에 대해서 추가적으로 쓰려한다. 일단 기본적으로.. 구조체의 메소드를 구조체 내부에서 데이터 수정 할 때는 Mutati.. 2022. 5. 8.
[Swift] Hashable 와 너무 졸리다 오늘은 Hashable.. 그저 딕셔너리의 키, 세트같은 중복값이 들어갈 수 없는 애들은 Hashable하다 라고만 알고있었는데, 저번주에 combine인가 hash 인가하는 메서드를 보고 공부해봐야겠다고 느껴서.. 먼저 Hashable이란 정수 해시값을 제공하여 유일하게 표현이 가능한 방법을 제공하는 프로토콜이다. 보통 hash한 값이다.. 하면 뭐.. 유일한 값, 중복되지 않는 값 -> UUID...? 뿐이 생각안나네 ㅋㅋㅋ오 때려맞춤 ㅋㅋㅋㅋ 요건 UUID에 대한 잼난 글이 있길래.. https://medium.com/@jang.wangsu/ios-swift-uuid는-어떤-원리로-만들어지는-것일까-22ec9ff4e792 [iOS, Swift] UUID는 어떤 원리로 만들어지는 것일.. 2022. 5. 2.