전체 글 63

비슷하지만 다른 화면 전환의 공통점과 차이점

1. NavigationController와 UITabBarController 어떤 차이점이 존재할까? 수직적 구조, 수평적 구조 Navigation을 먼저 말하자면 수직적 구조로 되어있다. 하나씩 상세 페이지로 들어가면서 원하는 설정을 한다 ( push ) 설정을 마무리 짓고 다시 원점으로 돌아온다. ( pop ) 단계별로 push 와 pop을 이용해서 화면 전환을 한다. NavigationController는 한번에 원하는 곳으로 이동 할 수 없다. -> 수직적 구조 반면 UITabbar는 수직적 구조 단계별 화면 전환을 거치지 않고 원하는 것에 바로 이동 할 수있음 스토리 보드를 통해 어떻게 구성되어 있는지 확인 해보자 Navigation으로 연결되어 있을때는 세번째로 이동하기 위해선 두번째를 무..

새싹 2023.07.24

@IBOutlet Colletion으로 연결시 weak을 사용하지 못하는 이유

새싹 과제 중 "@IBOutlet Colletion으로 연결시 weak을 사용하지 못하는 이유"에 대해 알아보는 시간이 있었다. 일단 @IBOutlet으로 연결시 Storage 부분에 Weak 과 Strong으로 구분되어 있는 것을 볼 수 있다. 하지만 @IBOutlet Collection으로 바꾸면 Storage 부분이 없어진것을 볼 수있다. 왜 그런것일까? 공식 문서에 답이 있었다. 이부분을 간단히 해석해보면 Swift에서는 클래스 속성의 순환 참조를 약하게 할때 weak과 unowned를 제공한다. 즉, weak 과 unowned는 클래스를 사용할때만 사용할 수있다. 바로... 타입으로 설정되어 있는 [] 배열이 구조체이기 때문이다. 공식문서를 살펴보자 결론 weak은 클래스 타입에만 사용할 수 ..

새싹 2023.07.23

iOS UiKit Image에 shadow와 cornerRadius 적용하기

코드UI로는 많은 블로그가 있었지만 스토리보드로 되어 있는게 없어서 간단하게 만들어보면서 어떻게 적용할지 알아보자 시작은 스토리보드 위에 imageView를 올려준다. 아울렛으로 연결하고 임의의 사진을 넣고 contentMode를 설정해서 꽉 채워준다. 그후 cornerRadius를 적용해본다. 참 쉽죠? 자 그렇다면 shadow를 적용해보자 엥? 왜 cornerRadius가 적용이 안됐지?... 음... 일단 사진을 빼고 ImageView Background에 색을 입히고 확인해보자. image가 없으니 shadow와 cornerRadius가 잘 적용된것을 볼 수 있다. 여기서 가장 중요한 점은 바로 이부분이다. mainImageView.clipsToBounds = false 코드 UI로 작성할때 cl..

새싹 2023.07.20

새싹 iOS 3기 감동의 최종합격

도전하고 싶어하는 사람들에게 조금이라도 도움이 되고자 포스팅 합니다. 저는 전문대를 나오고 자동차 업계에서 일했습니다. 그렇지만... 인생에 재미가 없었고 매너리즘에 빠지게 되었고, 문득 어렸을때 꿈이 떠올랐습니다. " 난 과학자가 될거야" , "난 대통령이 될거야", "난 사업가가 될거야" 이렇게 많은 꿈이 있었다는 기억으로 열정이 다시 생겨나는거 같았습니다. 왜 현실에 안주하고, 쥐꼬리만한 월급에 묶여있으며 아둥바둥 노예처럼 사는 것에 대한 환멸과 마음 한켠에서 새로운 도전하고 싶다라는 욕망이 떠올랐습니다. "아! 이건 아니다. 어렸을때 많은 꿈들이 있었는데 나도 더 늦기 전에 새로운 도전을 해보고 싶다" 그렇게 마음 먹으니 힘도 나는거 같았습니다. 그렇게 퇴사를 결심하고 회사를 나오게 됩니다. 막상..

iOS 2023.07.12

백준 팰린드롬수(1259번) 스위프트 풀이

● 문제 핵심 - 기존 글자를 거꾸로 했을때와 같을때 비교 입력의 마지막 줄에 0이 나오면 받지 않는다고 되어 있는데 이것을 구현하는데 While문을 사용했다. var inputArray: [String] = [] while true { let input = readline()! // "0"이 들어오면 반복문 종료 if input == "0" { break } // 배열에 담아주기 inputArray.append(input) } // 여기서 조건이 없으면 계속 받게 되고 탈출 할 수 없게 된다. // 필요한 조건은 마지막 줄에 0 이 나오면 반복문을 끝내는 조건을 추가해준다. 여기까지 구현했으면 다 풀었다 봐도 무방하다 이제 배열에 담긴 문자를 거꾸로 한것과 비교하는 코드는 작성하면 된다. var inp..

알고리즘 2023.06.25

iOS SDWebImage vs Kingfisher 비교

이미지를 API에서 받아올때 버벅 거리고, 이미지가 바뀌는 현상이 나타납니다 이런 현상을 막기 위해선 캐싱 작업이 필요합니다. 캐싱이란? caching - 파일 사본을 임시 저장소에 저장해서 보다 빠르게 접근할 수있게 해주는 프로세스 예를 들어 API를 통해 네트워크 통신 할때 사진의 양이 많으면 오래 걸리고, 버벅거리는데, 캐시를 만들면 임시저장소에 있는 사진을 끌어와서 버벅거림과 빠른 속도로 이미지를 로드할 수있다. iOS에서는 다양한 방법으로 캐싱작업을 할수 있는데 기본적으로 제공해주는 NSCaChe 를 사용하여 만들 수있다 . NSCaChe 적용 방법은 블로그를 참고해보시길 바란다. https://ios-development.tistory.com/658 [iOS - swift] NSCache 개..

iOS 2023.05.31

프로그래머스 LV.1 개인정보 수집 유효기간 스위프트

오늘은 2023 카카오 블라인드 코테 문제였던 것을 풀어보겠습니다 확실히 정답률이 낮네요... ㅎㅎ 자 그럼 시작하겠습니다. 지문을 읽어보면 중요한 부분이 있습니다. 즉 , if 현재 날짜 > 유효기간 날짜 { 파기 } 예시 1) 현재 날짜 ( 2022.05.19 ) > 유효기간 날짜 ( 2021년 11월 1일 ) ? 파기 : 파기 안함 => 파기 예시 2) 현재 날짜 ( 2022.05.19 ) > 유효기간 날짜 ( 2022년 6월 28일 ) ? 파기 : 파기 안함 => 파기 안함 예시 3) 현재 날짜 ( 2022.05.19 ) > 유효기간 날짜 ( 2022년 5월 18일 ) ? 파기 : 파기 안함 => 파기 예시 4) 현재 날짜 ( 2022.05.19 ) > 유효기간 날짜 ( 2022년 5월 19일 )..

알고리즘 2023.05.22

프로그래머스 LV.1 달리기 경주 스위프트

코드 실행을 통과한다고 답은 아니다... 문제에 1,000,000의 조건이 있으면 시간 복잡도를 생각해보자 자 그럼 시작해보겠습니다. 지문을 보면 어렵지만은 않은 지문입니다. 이름이 불리면 한칸씩 앞으로 간다 , 앞 칸에 있던 것은 뒤로 한칸 밀린다. 즉, index -1 , 앞에 있던 문자 index +1 이게 포인트 인거 같습니다. 자 그러면 한번 적어보겠습니다. for i in 0.. [String] { var result: [String] = players var callingDic: [String:Int] = [:] for (index, player) in players.enumerated() { callingDic[player] = index } print("callingDic:",callin..

알고리즘 2023.05.15

프로그래머스 LV.1 성격 유형검사하기 스위프트

카카오 LV.1 성격 유형 검사하기 문제를 풀어봤는데, 뭔가 어렵게 느껴진다면 어렵고 쉽게 느껴진다면 쉽게 느껴지는 문제였습니다. ??? 그게 무슨 말인교? 복잡해 보이지만 예시를 보면서 하나씩 이해하다 보니 풀리는 문제였습니다. 그렇지만 3시간 걸렸....ㄷ..ㅏ..ㅠ 그래도 풀었다는게 중요한거지!! 지문이 길기 때문에 설명하면서 중간에 필요한 부분을 캡쳐해서 보여드리겠습니다. 자 스타트~! 문제를 끝까지 읽었다면 가장 중요하게 생각하는 부분이 해당 지문이었습니다. 이 지문을 읽고 흠.. 그러니까 비동의 관련 선택지( 1 ~ 3 ) 를 선택하면 어피치형, 동의 관련 선택지 ( 5 ~ 7 ) 를 선택하면 네오형 의 점수를 얻음 choices에 따라 선택지에 해당하는 점수를 얻음 한 예시로 ["AN"] ,..

알고리즘 2023.05.13