전체 카테고리 223

[iOS] Bounds 와 Frame의 차이점

간단히 요약하면 bounds: 자신만의 좌표시스템에서 view의 위치와 크기 frame: 슈퍼뷰의 좌표시스템에서 view의 위치와 크기 가 되겠죠? 이렇게만 들으면 잘 이해가 안될 수 도 있어요 자신의 좌표와 슈퍼뷰의 좌표가 뭐가 다른지 자세히 알아볼까요?? 기본적인 뷰구조는 이런식으로 rootView(흰색)안에 view1(주황색)안에 view2(갈색)가 있는 형태에요 현재 이렇게 보이는 상태에요 생성위치가 (x: 0, y: 0)이니까 모두 왼쪽상단에서부터 시작해요 이상태에서 view1의 frame을 움직여볼께요 frame은 슈퍼뷰 기준좌표계니까 30, 30을 이동한다고하면 view1(주황색)은 rootView(흰색)기준으로 (30, 30)을 이동한 상태가 되요 iOS좌표계는 x가 양수면 오른쪽 y가 양..

[Swift Algorithm] 프로그래머스 17683 방금 그곡 (2018 카카오 블라인드)

programmers.co.kr/learn/courses/30/lessons/17683 코딩테스트 연습 - [3차] 방금그곡 방금그곡 라디오를 자주 듣는 네오는 라디오에서 방금 나왔던 음악이 무슨 음악인지 궁금해질 때가 많다. 그럴 때 네오는 다음 포털의 '방금그곡' 서비스를 이용하곤 한다. 방금그곡에서는 TV, programmers.co.kr 풀이과정 처음에 접근하기위한 생각은 문제에 시간만큼 문자열의 길이가 결정되는 것 같았어요 그래서 시간을 분리해서 계산해서 분단위로 맞추고 분만큼 문자열을 재생성하고 비교를 하면 될것 같았어요 비교할 때 C#, D#, F#, G#, A# 같이 #붙은 경우가있기때문에 contains을이용하게되면 원하는문자열: ABC 생성된문자열: ABC# 이런경우 원하는문자열이 포함..

[Swift Algorithm] 프로그래머스 42890 후보키 (2019 카카오 블라인드)

programmers.co.kr/learn/courses/30/lessons/42890 코딩테스트 연습 - 후보키 [["100","ryan","music","2"],["200","apeach","math","2"],["300","tube","computer","3"],["400","con","computer","4"],["500","muzi","music","3"],["600","apeach","music","2"]] 2 programmers.co.kr 풀이과정 처음에 보고 해결방법으로 든 생각이 속성의 조합으로 먼저 나열하고 그 조합마다 빼내와서 비교하면 될것 같아보였어요 [학번, 이름]과 [이름, 학번]은 같은 값에 해당하구요 [학번], [이름], [전공], [학년] -> 4 [학번,이름], [학번,..

[Swift Algorithm] 프로그래머스 17680 캐시 (2018 카카오 블라인드)

programmers.co.kr/learn/courses/30/lessons/17680 코딩테스트 연습 - [1차] 캐시 3 [Jeju, Pangyo, Seoul, NewYork, LA, Jeju, Pangyo, Seoul, NewYork, LA] 50 3 [Jeju, Pangyo, Seoul, Jeju, Pangyo, Seoul, Jeju, Pangyo, Seoul] 21 2 [Jeju, Pangyo, Seoul, NewYork, LA, SanFrancisco, Seoul, Rome, Paris, Jeju, NewYork, Rome] 60 5 [Jeju, Pangyo, S programmers.co.kr 먼저 대소문자를 구분하지않는다에서 문자열을 모두 lowercase로 변형했구요 LRU(Least R..

[Swift Algorithm] 알고리즘 정리 시작!

github.com/namsoo5/BaekJoon namsoo5/BaekJoon 매일 한문제씩 일주일에 최소3개풀기‼️ 눈뜨면 풀고 눈감기전에 풀기 ‼️. Contribute to namsoo5/BaekJoon development by creating an account on GitHub. github.com Swift풀이를 공유하며 한번 더 정리해보려고 합니다!! 물론 저도아직 잘 하지못해서 좋은 풀이가 아닐 수 도있어요 ㅎㅎ.. 알고리즘을 리드미로 정리하는 것보다 블로그로 정리하는게 더 깔끔해 보일 것 같네요 :)

[RxSwift] Observable? Driver? Relay? 알아보기

Rx를 사용하다보면 타입이 다양한데 기능이 비슷하기때문에 헷갈리기때문에 확실히 알고 사용할 필요가있어요 다른 게시글에서 Observable, Subject, Relay는 다뤘으니 간단하게만 말씀드리고 넘어갈게요! 2020/06/27 - [iyOmSd/Title: RxSwift] - [RxSwift] Observable, Subject, Relay [RxSwift] Observable, Subject, Relay Subject란 Observable에 값을 추가하고 방출할 수 있도록해주는 기능이에요 즉, Observable(방출자)이자 Observer(구독자)의 역할을 모두할 수 있다고 생각하면되요 Cold Observable을 Hot하게 만들어 줄 수 있다 nsios.tistory.com Observabl..

[Swift] WKWebView 앱 죽는 오류 현상

간단하게 프로젝트중 이슈를 적어보려고해요 프로젝트를 진행하면서 웹뷰를 쓰는데 일부 기기에서만 웹뷰접근시 앱이 죽는 현상을 발견했는데요!! 모든 시뮬레이터기기로 테스트했을 때 죽지않아서 몰랐었어요... 에러난 경우 디버그를 하는 방법은 1. 에러나는 기기를 가져와서 직접 빌드한다 2. 파이어베이스를 사용한다 만나기 쉽거나 가까이있으면 1번이 더 빠르고 편할 수도 있지만 저 같은경우는 2번 방식이였구요 혹시 웹뷰를 쓰시는 분이면 이런경우가 있을지모르니 아래처럼 꼭 추가해줘야 할 것 같아요 Fatal Exception: NSInvalidUnarchiveOperationException Could not instantiate class named WKWebView because no class named WKW..

iyOmSd/Title: Swift 2020.10.25

[Swift] Firebase Crashlytics dSYM 누락 업로드

비정상 종료를 확인하기 위해서 사용하기 위해서 사용하는 녀석이에요 그런데..! 자동으로 올라가질 않을 때가 있어서... 수동으로 올려줘야 할때가 있어요.. ㅠ AppStore Connect에 들어가서 활동내역메뉴에서 해당하는 빌드버전을 누르고! 밑에보면 dSYM다운로드가 있어요 우선 이거를 들고오세요!! 자동으로 다운로드에 저장이될거에요 이제 업로드하는 명령어를 입력해야해요 먼저 터미널을 열고 저는 프로젝트경로위치에서 시작했구요 Pods/FirebaseCrashlytics/upload-symbols를 써주고 -gsp 를 추가하고 GoogleService-Info.plist가 있는 위치를 써주고 -p ios 를 추가하고 appDsyms가 있는 위치를 입력해주세요 그리고 엔터를 하면!! 업로드 성공 !! 파..

iyOmSd/Title: Swift 2020.10.25

[Swift] iOS 파일구조 알아보기 Sandbox, Bundle - 파일시스템(APFS)

iOS의 파일시스템(APFS)은 기본적으로 앱마다 별도의 파일을 생성하고 Sandbox안에서만 접근이 가능해요 따라서 외부로부터 접근에 보호되서 조작되는것을 막는 보안형태죠 그렇기 때문에 옛날에는 특정 앱에서 만든 문서는 특정 앱을 통해서만 볼수 있었지만 지금은 다행이도 Files앱을 통해서 볼 수 있죠 Sandbox를 사용하기때문에 앱과 시스템이 상호작용이 필요할 때 시스템 접근권한을 앱이 받아오는 방식이에요 사용자들은 기본적으로 user domain에 속해서 대부분의 작업을 수행하게 되요 구조를 한번보려고 시뮬레이터의 폴더를 한번 탐색해봤어요 시뮬기기를 따라가면 Containers라는 폴더가 컨테이너를 구분하는거같구요 Data Container를 접근해서 보면 각 앱마다 파일이 구현된다했엇죠?? 5F..

iyOmSd/Title: Swift 2020.10.23

[WITH] 여행 동행 플랫폼 개발

동아리에서 처음 개발한 건 2019.12.21 ~ 2020.01.04(2주) 동안 개발했고 만들어진 프로젝트의 완성도가 너무 떨어지고 개선하는 거보다 새로 만드는 것이 더 빠르다고 생각했어요 그래서!! 새로 다시 개발하면서 2020.01.27 ~ 2020.04.27 최초 배포가 되었구요 지금(2020.10.17일 기준) 계속 조금씩 기능 개선도 하면서 디자인도 개선시키면서 개발하고 있는 프로젝트예요 많은 것들을 처음으로 경험해서 더 기억 남는 프로젝트예요 제가 처음으로 다른 분야의 사람들과 협업을 진행한 프로젝트이고 iOS 개발을 시작하고 처음으로 서비스를 배포에 성공해서 앱스토어에 올린 앱이기 때문이에요 프로젝트를 하면서 협업의 중요성을 느꼈던 것 같아요 제가 할 수 없는 부분, 필요한 부분을 다른 사..