게다가 아이폰에서는 적용되는데, 동작하지 않는 것이 아이패드 뿐이라면..!hitTest(_:with:) hitTest(_:with:) | Apple Developer DocumentationReturns the farthest descendant in the view hierarchy of the current view, including itself, that contains the specified point.developer.apple.com디스플레이에 touch down 이벤트가 입력되면 터치된 뷰에서부터 가장 먼 뷰를 찾아서 반환하는 메서드이다.func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? { if self.hidden || !..
2024년 6월 5일 기록 2024년 2월부터 시작한 취업 준비가 끝났다. 요즘 신입 취업은 커녕 이직 시장도 힘들다고 해서 최대 1년을 예상하고 조급하지 않게 준비하려고 했는데, 감사하게도 나도 마음에 드는 회사에서 최종 합격을 받게 되어 꽉 채운 4개월 만에 취준기를 마칠 수 있었다. 결론부터 말하자면 인터파크트리플의 트리플클라이언트팀 iOS 개발자로 최종 오퍼를 받게 되었다. 최종면접이 남은 곳이 있어 보러는 가겠지만 결국 트리플팀에 합류하게 될 것 같다. 취업 준비를 하면서 가장 필요했던건 이전에 채용 프로세스에 참가한 다른 분들의 후기였는데, 조금이라도 더 정보를 알 수 있으면 채용 과정의 분위기를 이해하기 쉬워서 더 잘 준비할 수 있었다. 여러 곳을 넣다보면 짧은 후기더라도 그 안에서 이런 흐..
ISO 8601을 아십니까?일단 난 몰랐음 .. :(국제표준화기구 ISO에서 정한 날짜, 시간 데이터에 대한 규격이다.글 제목과 같이 `yyyy-MM-ddThh-mm-ssZ`의 형태이다. 최근 News API를 사용해서 공부하느라 앱을 만들고 있는데, 이 API에서 뉴스 작성일에 대한 응답값을 이런 형태로 넘겨준다. 왜 이렇게 보내주나 하고 처음에는 T와 Z를 기준(separator)으로 split해주고 인덱스를 사용해서 일일이 날짜만 가져와줬는데, 그럴 필요가 없더라. 웹에서 보편화된 포맷이라 스위프트에서도 해당 포맷을 이미 정의해놨기 때문.# 기존 작성한 코드 (하나하나 split하고 인덱싱)static let dateAndTime = "T"static let endOfTime = "Z"static ..
3년 만에 다시 공부하는 데이터베이스 ... ^__^나흘 후 코테이니 프로그래머스의 SQL 고득점kit과 함께 빠르게 DQL만 복습해 봅니닷 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr쿼리 순서 FROM-WHERE-GROUP BY-HAVING-SELECT-ORDER BY예제 테이블 EMPLOYEE NAMEAGEJOB1ZENA25DEVELOPER2RYU27DEVELOPER3MISO29SALESMAN4BUDDLE27SALESMAN5MOON25DEVELOPERSELECT * FROM EMPLOYEEEMPLOYEE 라는 테이블의 모든 컬럼을 조회 NAMEAGEJ..
2관왕에 성공했어요 🚀 따끈따끈한 회고# 주제를 선정하게 된 계기이번 주제는 작년에 아카데미에서 아이작의 '혼자서 앱 만들기' 세션을 하면서부터 구상한 내용이다. iOS 개발을 시작하면 무조건 접하게 되는 SF Symbols에 대해 다루었다. SF Symbol은 애플이 제공하는 심볼 이미지이고, 스위프트로 개발할 때 시스템명만 잘 적어주면 이미지를 따로 넣거나 가져오지 않고 코드 한 줄만으로 쉽게 사용할 수 있다.2019년 첫 발표된 SF Symbols의 가짓 수는 2,300여 개 정도였고, 점점 늘어나 현재는 그 개수만 5천개가 넘는다.그런데 여기서 쓰고 싶은 아이콘의 이름을 모르면 어떻게 찾을까?비슷한 단어로 계속 검색해본다카테고리를 이용해 찾는다일일이 찾는다3단계까지 가면 눈알빠진다... 저러고도..
Error: Process completed with exit code 65.릴리즈 스킴을 쓰려고 DontForget-Release로 설정했는데 확인이 안됐다. 기본 스킴인 DontForget으로 수정해서 해결했다.코드가 진짜 잘못됐었다. 이미지 사용할 때 오타날까봐 String+Extension으로 static 상수를 정의해서 사용하는데 anniversaryDelete라는 상수는 없었다. 이미지 이름도 아마 이전에 사용하던 것에서 바꾸는 걸 까먹은 듯한데, 빌드 캐시에 남은게 있었는지 빌드나 배포할 때는 문제없이 동작했다....+ 24.04.15.오류나 캐시때문에 발생한 일이 아니고 Xcode 15에서 업데이트된 내용이었다. 당시에도 에셋 이름이 anniversary_delete라서 혹시..?하고 정..
보통 아요에서는 이미지를 다룰 때 메모리 캐시로 관리한다.근데 이번에 다룬건 이미지는 아님넥스터즈에서 만든 음력기념일 서비스에서 등록된 기념일의 상세 정보를 볼 수 있는 뷰가 있는데, 이 뷰가 나타날(onAppear) 때마다 서버에 이 정보를 요청한다. 그리고 연필모양의 편집 버튼을 누르면 나오는 뷰가 나타날 때나 편집을 취소하고 나올때나 편집을 완료하고 이 화면으로 돌아올 때도 매번 요청한다. 매번 네트워크 기반의 api를 주고받는 것보다, 한 번 받아온 정보는 메모리 캐시에 담아두고 정보가 수정되지 않는 이상은 캐시에 있는 값을 확인하는 게 효율적일 것 같아서 수정해봤다.import Foundationfinal class CacheManager { static let shared = CacheM..
나는 스위프트 이전에 자바로 개발을 해왔기 때문에 .. 자바의 메모리 관리 방식을 생각해보면 가비지 컬렉션을 먼저 떠올릴 수 있다. GC(Garbage Collection) 런타임 중 더 이상 필요가 없는 garbage라고 판단되면 메모리에서 해제 반면 스위프트는 ARC라는 메모리 관리 기법이 적용된다. ARC(Automatic Reference Counting) 컴파일시 자동으로 retain, release 코드를 생성 참조 횟수를 세어 더 이상 참조되지 않는 인스턴스를 메모리에서 알아서 해제 두 기법의 가장 큰 공통점은 개발자가 따로 메모리 해제에 대해 관리할 필요가 없다는 점이며, 가장 큰 차이점은 메모리의 해제가 결정되는 시점이다. GC는 런타임 중 객체를 계속 감시하기 때문에 추가적인 오버헤드가..
넥스터즈에서 챙겨챙겨를 개발하면서 서버에 계속 접근하면서 데이터를 조회했는데, 네트워크가 조금이라도 불안정하거나 잠시라도 끊기면 기존 기념일이 화면에서 전부 사라지고 기념일 상세 조회를 하려고 하면 UI가 무너지기도 했다. 사용자 입장에서 너무 당황스러운 경험일 것 같아 네트워크 연결 상태를 확인해서 UI에 반영해주어야겠다고 생각했다. import Foundation import Network final class NetworkMonitor: ObservableObject { static let shared = NetworkMonitor() private let networkMonitor = NWPathMonitor() private let workerQueue = DispatchQueue(label: ..
내 두번째 넥스터즈 24기 이수와 함께 수료하게 되어 넥스터즈의 시니어 회원이 되었다.작년만큼 회식이나 네트워킹에 많이 참여하지는 못했지만 어느 팀보다 실력있고 돈독한 팀을 만나게 되어서 굉장히 기쁘다 =) 1주차 24.01.06. #OT #팀빌딩 #모임모임 #자기소개 팀 빌딩이 있었던 날,내 동기 송이가 24기 단톡방에 있는걸 보고 너무 놀랬따. 첫 날 같이 점심먹고 들어갔따. 넥터인들은 다들 바쁜 사람들인데, 꾸준히 대외활동에 참여하는 걸 보면 꽤 놀랍다. 몇 기수를 연속으로 참여하는 사람들도 많다.내가 하고 싶었던 프로젝트는 딱 한 팀이라, 팀빌딩할 때 어필할 수 있는 티켓인지 명함인지가 4장 주어지는데 딱 한 팀에만 냈었다. 다들 엄청 열정적이어서 1지망에서 떨어질까봐 걱정했는데, 관상 + MB..