본문 바로가기

전체 글138

Swift) hitTest Responder Chain을 공부하던 도중.. 이 내용도 알아야할 것 같아서.. Hit Testing hitTest라는 메서드가 있다. 이는 UIView의 인스턴스 메서드이다. 이 메서드를 통해 어떤 View가 이벤트를 처리할지 결정할 수 있다. 해당 메서드는 두개의 파라미터가 있는데, 말로 좀 풀어서 메서드를 설명해보자면.. 특정 포인트에 속하는 뷰 중, 특정 이벤트를 처리할 수 있는 뷰가 있느냐? 있으면 그 뷰의 하위계층(자식)은 처리할 수 있음? 여기서 나뉜다. 자식이 이벤트를 처리할 수 있는 경우와 없는 경우 아 처리할 수 있음?? 걔(자식)의 자식(자식의 자식)도 처리할 수 있음? 아 안됨? 그럼 너(부모)가 리턴 고 설명이 잘 됐을랑가 모르겠지만, 이벤트를 받을 수 없는 뷰가 나올때까지 파고.. 2022. 2. 20.
Swift) CoreData CoreData 어렵더라.. 아니 생각보단 괜찮은건가 여튼 CRUD까지는 괜찮더라 Core Data는 주로 크거나, 복잡한 관계를 가진 그런 유저의 데이터를 저장하는 데 쓰인다. Core Data를 보면 저장하는데만 쓰이는 것은 아니다. 정의만 봐도 알 수 있듯 저장을 하기위한 UserDefaults와는 다르다. 얘는 클래스고, Default System에 접근할 수 있는 인터페이스를 제공한다. 그리고 접근해서 저장하고, 사용한다. 얘는 프레임워크다. 위 공식문서에 들어가면 알 수 있듯, 여러가지를 할 수 있는 프레임워크이다. 저장을 하든, 백업을 하든, 이전 상태로 되돌리든.. 그 중 Persistence에 대해서 알아보려한다. CRUD 우선 CRUD전에 초기셋팅은 해줘야 하니깐 초기셋팅부터 해보자 나.. 2022. 2. 20.
Swift) UIAlertController ActionSheet Programmatically UIAlertController ActionSheet Programmatically 초간단하므로 바로 드가보자 아 먼저 액션시트가 뭔지부터 볼까.. 액션시트는 alert의 스타일 중 하나인데, 알림뜰 때 팝업의 스타일 중 하나라고 생각하면 된다. 요거 많이 보셨죠? 스토리보드로 하든 코드로 하든 얼럿을 띄우는 것은 간단하다. 먼저 나는 특정 버튼을 누르면 얼럿이 나오도록 예를 들어볼 것이다. private func configButton() { let button = UIButton() button.backgroundColor = .gray button.setTitle("button", for: .normal) self.view.addSubview(button) button.translatesAutore.. 2022. 2. 20.
Swift Performance (Allocation) Swift Performance (Allocation) 퍼!!!!!포먼스 평소에도 struct와 class.. 차이를 뭐 대충 알고있다고 생각했는데.. 이번엔 성능 차이에 대해 좀 자세히 알아보려 한다. 관련해서 좋은 글들이 많으니.. 내 글은 딱히.. 퀄리티가 좋다는 생각이 안들어서 다 읽으라곤 못하겠다 여튼.. 이번엔 Allcation, Reference Counting, Method Dispatch 정도까지 알아보려한다. 프로토콜 제네릭 디스패치쪽은 다음에.. https://developer.apple.com/videos/play/wwdc2016/416/ 해당 wwdc를 참고하였다. 키노트있어서 그림 안그려도 되겠다^^ 개꿀 일단.. 위에서 말한 순서대로 가보자 아 그 전에 성능표를 보자 왼쪽으로 .. 2022. 2. 20.
Swift) final final? 출처 Swift에선 상속을 지원한다!! final 키워드를 클래스에 앞단에 붙이면 해당 클래스는 더 이상 상속하지 않겠다.를 의미한다. 상속하지 않겠단걸 보고, 어.. 클래스만 상속 가능하니깐 클래스만 final을 사용할 수 있겠네? 하면.. 오산이다. 재정의가 더 이상 필요없다고 생각하거나, 재정의를 금하고싶은 경우에 사용할 수도 있다. 아무래도 상속받아서 하는 것이 재정의다보니 같은 것으로 생각하면 될 것 같다. 그렇다면 final 키워드를 붙여주면 얻는게 무엇일까? 이는 클래스와 관련이 있는데.. 클래스는 Dynamic Dispatch로 동작한다. Dynamic Dispatch는 런타임시 VTable을 통해 메서드를 찾아 실행하기 때문에 "찾는 것"에서 성능상 손해를 발생시킨다. 클래스.. 2022. 2. 20.
Swift) Frame vs Bounds 평소 알아야겠다 생각한 둘의 차이를 간단히 알아보려한다. Frame 공식문서를 보면 알 수 있듯.. it's superview's coordinate system 슈퍼 뷰, 즉 자신의 한단계위 부모뷰에 의해 위치가 결정된다. 부모의 origin으로 부터 25,25 떨어진 곳에서부터 뷰가 그려지기 시작하는 것이다. Bounds 얘는 좀 다르다. it's own coordinate system 자기 자신의 좌표에 의해 위치가 결정된다. 그래서 어느 위치에 있던 자신의 좌표이기 때문에 (0,0)을 유지한다. Frame은 뷰를 감싸는 사각형 모양을 나타내기떄문에 뷰가 회전한다면, Frame은 변하게된다. 하지만 자기 자신을 표하는 Bounds의 경우 값이 변하지 않는다. 2022. 2. 20.