본문 바로가기

IOS/실험5

hitTest 문제 정의 버튼을 가리고 있는 View가 존재할 때, 해당 View를 무시하고 버튼을 누를 수 있는건지에 대한 의문으로 시작되었습니다. 문제 해결과정 isUserInteractionEnabled를 사용하면 한번에 해결이 되지만 좀 더 원초적인(?) 이유가 궁금했습니다. 서칭해보니, hitTest라는 키워드를 공부하면 되겠다 싶었습니다. 우선, 공식문서의 힘을 빌려 정의부터 살펴볼까요. 직역 : 현재 뷰를 포함하여, 현재 뷰의 뷰 계층구조에서 구체적인 point를 포함하는 가장 먼 자손(?)을 리턴한다. 아래 그림을 보면서 설명드리겠습니다. RedView가 표시되어 있는 부분을 눌렀을 때, 가장 먼 자손은 누구일까요? 바로 RedView입니다. 뷰 계층구조에서 위로 올라갈 수록 부모, 아래로 내려갈 수록 .. 2024. 1. 12.
mutating이 성능에 끼치는 영향 분석 및 Copy-On-Write와의 관계 실험하면서 과정을 기록한 글이라 정리되지 않은 글일 수 있습니다. 감안하면서 봐주세요 ㅎㅎ.. 틀린점이 있다면 댓글로 알려주시면 감사하겠습니다 🙇 🧐 해당 실험을 하게 된 계기 Swift를 사용하면서, struct와 class 중 어떤 것을 사용해야할지에 대한 고민을 항상 하게되는 것 같습니다. 해당 고민은 개발에 아무리 능숙한 사람이라도 매번 하게되고 매번 고치게 된다고 하는데요. 또한, 프로젝트를 진행하면서도 struct에 mutating이 있을 때, 이를 "class의 참조기능을 활용할 필요가 없고 애플에서 struct를 권장하기 때문에 struct를 사용했다"라고 말했던 팀원이 있었어서 한번 써도될지? 쓰면안될지? 에 대해 분석해보려고합니다. 😳 mutating이 뭔데? 기존에 제가 알고 있던 지.. 2023. 12. 21.
RunLoop.main vs DispatchQueue.main 문제 상황 콤바인을 사용하면서 scheduler를 설정할 때, 평소 Runloop.main과 DispatchQueue.main이 둘 다 Main Thread에서 동작한다는 공통점을 갖기 때문에 UI Update를 진행할 때 두 가지를 혼용해서 사용했었습니다. 하지만, 프로젝트를 진행하던 도중 tableView를 스크롤하는데 이미지를 포함하는 Reusable Cell이 한칸씩 변경되지 않고 스크롤이 종료된 시점에 한번에 셀의 이미지가 변경되는 현상이 발생하였습니다. 😂 그래서 해당 부분에 대한 공부를 시작했는데요~ 아래는 해당 현상 설명하기 위한 예제 프로젝트까지 준비되어 있으니 끝까지 잘 봐주세요 🙏 문제 해결 과정 처음에는 문제를 찾는데 시간이 걸렸었는데요 ..ㅠ Schduler의 Runloop라는 단.. 2023. 10. 16.
String의 joined(separator:) DeepDive 문제상황 평소에 String을 사용할 때와 알고리즘 문제를 풀이할 때, String을 합치는 + 연산자와 joined() 함수에 대해 별 생각없이 사용하고 있었습니다. 그러다 문득, joined() 함수 내부도 + 연산자 를 사용한 코드 형태를 갖고있지 않을까? 라는 의문을 가지면서 해당 실험을 시작하게 되었습니다. 해결과정 joined() 함수 내부를 살펴봐야겠습니다! Swift의 github를 살펴봐야할 것 같습니다! 아래와 같이 구현되어 있네요? 모든 내용을 다 해석하기 보다는 핵심적인 내용만 보겠습니다..! internal func _joined(separator: String) -> String { // A likely-under-estimate, but lets us skip some of t.. 2023. 10. 14.