공부
-
Xcode15에서 XCTest를 할 때 Testing... 에서 멈추는 현상공부/iOS 2024. 1. 2. 18:38
# 소개 🐮 Xcode에서 Unit Test를 수행할 때 너무 오래 걸리거나 멈추는 현상이 있었습니다. 단순히 테스트를 오래하는 것이 아닌, 빌드 자체는 1초 미만이었으나 테스트에 너무 많은 시간이 소요되는 문제입니다. # 해결 과정 ⛴️ 테스트를 한번 하려고 하면 너무 시간이 오래걸려 이상하다 생각했습니다. 코드를 잘못 작성했는줄 알고 이리저리 수정하며 삽질했는데 야곰 아카데미에 관련 예제가 있더군요. https://yagom.net/courses/unit-test-%ec%9e%91%ec%84%b1%ed%95%98%ea%b8%b0/ Unit Test 작성하기 - 야곰닷넷 Unit Test 작성하기 테스트를 작성하면 좋다는 말을 많이 들어보셨을 것 같습니다. 하지만 막상 테스트를 작성해보려고 […] ya..
-
UIKit에서 Delegate Pattern를 쓰는 이유공부/iOS 2023. 12. 21. 14:38
# 시작하기 전... UIKit을 처음 접했을 때 가장 당황했던 것은 호출하지 않고도 실행되는 함수였습니다. 무슨 소리인가? 싶겠지만 정말 func 로 구현은 되어있는데 어디에도 호출은 하지 않았지만 분명 그 코드는 동작하고 있었던 것이죠. 그 미스테리의 정체는 오늘 알아볼 Delegate입니다. # Delegate란? Delegate를 직역하면 위임자란 뜻입니다. (이걸 처음 봤을 때 나의 심정) 도대체 무슨 소리인가 싶고, 설명도 잘 이해가 되지 않죠... 뭔가 위임자라고 하면 뭔가 대신 일을 처리해주는 종속된 관계가 아닐까 생각했다. 하지만 정 반대로 일종의 Delegate를 채택하는 쪽이 팀장님, 요청하는 쪽이 직원에 가깝습니다. Delegate를 생성하는 과정을 비유를 섞어 설명해볼게요. 1. ..
-
[UIKit]키보드 위에 수정 제안을 비활성화하기공부/iOS 2023. 12. 13. 19:27
오류 발생 원인 자동으로 맞춤법 교정해주거나 사용자의 입력을 예측해서 입력을 돕는 기능은 유용하지만 때에 따라 필요하지 않는 경우도 존재합니다. 아래의 코드를 textfield에 추가해주면 아래와 같이 제거할 수 있습니다. textfield.autocorrectionType = .no textfield.spellCheckingType = .no 그러면 다음과 같이 UIKit에서 맞춤법 검사를 무시할 수 있습니다. 코드 사용 예시 import UIKit class PlaneTextField: UITextField { init(placeholder: String) { super.init(frame: .zero) self.placeholder = placeholder self.autocapitalization..
-
self에서 unexpected 에러가 발생하는 이유공부/iOS 2023. 12. 1. 02:36
현재 UIKit 기반으로 Codebase로 앱을 개발하고 있습니다. 해당 오류는 프로젝트 진행중에 마주했던 문제입니다. Issue 실행 자체는 잘 되었지만 노란색 에러가 발생하는게 거슬려 찾아보게 되었습니다. 저기서 제안하는 방식대로 Fix를 하게되면 이 버튼을 실행할 때 에러가 발생하게됩니다. Solution 해결법은 간단합니다. let으로 선언한 signupButton을 lazy var로 수정하기만 하면 됩니다. Reason 이전 코드에서 self 의 참조에서 문제가 발생한 이유는 signupButton 변수가 초기화될 때 self가 아직 초기화되지 않았기 때문입니다. 우선 let을 사용한 코드에서, signupButton 변수가 초기화 되는 시점에서 클로저가 호출되고 있습니다. 하지만 아직 self..
-
[iOS인강] 1. AutoLayout/Constraint공부/강의 정리 2023. 10. 20. 17:50
학습 목표 Frame 기반 레이아웃과 AutoLayout의 차이점에 대해 이해한다. Autolayout의 주요 속성에 대해 이해한다. Autolayout으로 비율코딩을 하는 방법에 대해 이해한다. Constraint iOS Constraint의 요소는 크게 크기 속성(size attributes)과 위치 속성(position attributes)으로 나눌 수 있습니다. 크기 속성은 뷰의 너비(width), 높이(height), 너비와 높이의 비율(aspect ratio)을 제한하는 속성입니다. width : 뷰의 너비를 제한합니다. height : 뷰의 높이를 제한합니다. aspect ratio : 뷰의 너비와 높이의 비율을 제한합니다. 위치 속성은 뷰의 상단(top), 왼쪽(leading), 하단(bo..
-
[iOS인강] 0. 시작공부/강의 정리 2023. 10. 20. 16:22
누구나 따라할 수 있는 iOS 클론코딩 ( Feat . 컴공선배 라이징캠프 ) https://www.udemy.com/course/comgongbro_ios_clonecoding/ 예전에 사두었던 iOS 강의를 여유가 생겨 이제야 보게 되었습니다. 저는 클론코딩을 따라하는 것 보단 직접 헤쳐나가는데 의의를 두는 편입니다. 프로젝트를 수행할 때도 필요한 내용은 그때그때 익히고 적용하면서 문제를 해결했습니다. 그러다보니 "낯선 문제"가 주어지면 곧잘 해내지만 "보편적인 문제"에서 속도가 안난다는 것을 느꼈습니다. 저는 이번 강의를 통해 깊이있게 공부하고자 합니다. 이번 강의로 모르는 내용을 알게되고, 아는 내용에는 확신을 가지고자 합니다.
-
[Swift] 와일드카드 패턴(switch, tuple, enum, function)공부/Swift 2023. 10. 17. 22:17
평소 코드를 작성할 때 뭔지도 모르고 자연스럽게 썼었는데, 패턴으로 분류되는 문법이었네요. 특히 와일드카드와 튜플은 코딩테스트 문제를 풀 때 코드를 간결하게 작성하는 목적으로 주로 사용했던 것 같습니다. 패턴이란? '단독 또는 복합 값의 구조를 나타내는 것' 어렵게 써있는 말이지만, 단순하게 표현의 일환이라고 생각하면 되겠습니다. 특히, switch, guard, if, for등의 키워드와 함께 사용할 때 강력합니다. 여러 패턴 중에서 와일드카드에 대해 어떻게 적용하는지 예제 위주로 설명하겠습니다. 와일드카드 패턴 와일드카드 식별자가 위치한 곳의 값은 무시합니다. 와일드카드 : 0개 이상의 문자로 대체할 수 있는 밑줄 _ 와일드카드 패턴 : 일치하는 모든 값을 무시하는 밑줄 _ 와일드카드는 값을 해체하거..
-
Apple Watch (waiting for first unlock) 빌드 에러 해결공부/WatchOS 2023. 9. 25. 17:38
이게 머선 일이고..? (아래 3줄 요약 있어요) 주말동안 심심해서(사실 자소서 쓰다가 짜증나서 딴짓함ㅋㅋ) 애플워치로 간단한 앱을 만들었습니다. 메이플스토리 샤타포스 이벤트를 준비하는 마음가짐으로 뚝딱... 펑~ 에잉 이제 애플워치에 넣고 마무리해야겠다~ (사진은 캡쳐 안해둬서 퍼옴) 왜 안돼? 문뜩 자꾸 기다리라고만 하는 Xcode를 보고있으니 메이플스토리 전 디렉터분이 생각났습니다.. 원인 분석 이 녀석 시간이 지나면 해결이 될줄 알았습니다. 한참 선 꼽아놔도, 애플워치의 비밀번호를 해제해도 안되더라구요. 그러다 개발자 포럼의 글을 찾게 되었습니다. 알고보니의 Apple Watch (waiting for first unlock) 에러는 한참 전부터 존재했고 원인 불명으로 발생했습니다. 실제 개발을 ..