잘 안다고 생각했지만 일을 하다보니 의외로 머리 아프게 하는 두 가지가 깃이랑 코코아팟인 것 같다. 깃은 사실 여전히 모르는 것도 너무 많고 어려운거 인정하는데... 가끔 코코아팟 때문에 꼬이면 배신감이 세게 들더라. 그래서 그 배신감 좀 덜 느끼려고 공식 홈페이지 싹 훑고 왔다. 놀랍게도 양이 별로 안된다! 코코아팟을 최초로 설치하고 프로젝트에 적용하는건 많은 블로그 글들이 있어서 참고하면 좋을 것 같고, 나는 내가 일하면서 궁금했던 것, 필요하다고 생각한 부분만 추려보려고 한다. CocoaPods 요약해서 알아보기 👉 CocoaPods : Xcode 프로젝트에서 사용하는 라이브러리들의 의존성을 관리해주는 도구 👉 Podfile : 의존관계가 정의 된 텍스트 파일 CocoaPods는 라이브러리들 간의 ..
노션으로 읽기 [스위리 사랑채 바로가기] 문제상황 & 원인 서버에서 내려받은 스킴값에 따라 카카오톡 플러스친구 화면으로 랜딩하는 기능을 만들고 있었다. 그런데 랜딩이 안된다? UIApplication.shared.canOpenURL(url:)로 확인해보니 false가 떠버린다. canOpenURL이 false가 뜨려면 (1) 스킴에 해당하는 어플리케이션이 설치되어 있지 않거나 (2) Info.plist에 스킴을 등록을 안했거나. 두 경우가 모두 아닌데... 왜 안될까? 브레이크포인트를 찍어보았다. ㄷㄷ... 서버에서 값은 받는데 canOpenURL이나 open으로 URL을 넘겨줘야할 시점에는 URL = nil 이었던 것! 받는 스킴은 톡스킴://@플친문의/개인정보_수정 처럼 생겼는데... 한.글이 원인이..
의도치 않게 (2)가 되어버린 포스팅입니다. 예전에 struct와 class의 비교를 표로 정리해서 올린 글이 있습니다. 이래저래 정리를 하고 나름대로 공부도 하며 정리를 했는데 예제도 없이 정리를 해서 머리에 잘 들어오지 않았던 탓에 조금 기억에 더 오래 남을 수 있도록 직접 코드를 쓰며 비교를 해보고자 합니다. 그래서 이번 포스팅에서는 class에서 할 수 있는 것들을 정리한 후에 같은 것을 struct로 바꾸면 어떤 차이가 있는지 비교해보겠습니다. 요즘 크리에이터라는 직업이 핫하니 Creator class를 생성해보았습니다. 우선 크리에이터 이름이 필요할테니, name 이라는 instance property가 필요할 것 같아요. Creator 객체를 새로 생성할 땐 항상 이름을 지정하도록 initi..
제네릭을 사용하면 코드의 중복을 제거할 수 있다는 장점이 있습니다. 같은 일을 하는 메소드가 parameter type이 달라서, return type이 달라서 중복 된 코드를 짜야한다면 불필요하게 파일이 길어지겠죠? 이번에 제네릭을 사용해보니까 네트워크 요청을 할 때 유용하게 사용할 수 있더라구요. 그래서 그 경험을 공유해보고자 합니다. 네트워크 통신을 하다보니 비슷한 로직을 가진 서버에 데이터를 요청하여 받아오면 모델에 맞게 decoding을 진행해서 필요에 따라 가공해서 사용하는게 일반적이죠? 예를 들어 Album, Artist, Playlist 모델이 있다면 func fetchAlbum( ), func fetchArtist( ), func fetchPlaylist( )라는 메소드를 통해 그 일련의..
UITableView 또는 UICollectionView를 사용하면 데이터를 정돈된 형태로 사용자에게 보여줄 수 있습니다. UITableView보다 UICollectionView가 더 다양한 layout으로 보여줄 수 있기 때문에 저는 거의 Collection View를 사용하는 것 같아요. 그래서 UICollectionView를 사용하면서 겪었던 경험들을 이 글에서 공유해보고자 합니다. 트러블슈팅이기도 하고, 개념을 톺아보는 글이기도 하고, 다양한 뷰를 만들어 본 경험을 공유하는 자리이기도 하겠네요. 1. cell이 화면에 표현이 되지 않는다? UICollectionView를 IB가 아닌 코드로 짜는 경우 cell이 예상과 다르게 display 되거나 전혀 보이지 않는 경우 확인해야 할 것이 몇 가지 ..
GitHub 레포 하나 소개하고 오늘 글을 시작해보겠습니다. Swift Programming Language Evolution 이라고 Apple에서 운영하는 레포입니다. Swift 언어의 발전을 위해 모두 제안을 할 수 있는 공간이자 다음 Swift 언어가 어떤 방향을 가지고 발전할지 알 들여다 볼 수 있는 곳이기도 합니다. 오늘 dataTask에서 발생할 수 있는 Error의 종류에 대해 다뤄 볼 예정인데 이에 앞서 Result type에 대한 얘기도 해보려구요. SE-0235 에서 Swift 표준 라이브러리에 Result 타입이 처음 소개됩니다. 특히나 비동기 API를 사용한다면 코드가 복잡해지니 간단하고 명확한 방식으로 Error 처리를 할 필요가 있어 Swift 초창기부터 사람들이 Result 타..
프로세스, 스레드, 동시성, 병렬성 등은 iOS 보다 더 low-level로 들어가 운영체제와 밀접한 관련이 있습니다. 그러나 이 글은 궁극적으로 GCD와 Operation Queue를 다루고 싶으니 iOS 개발 관점에 맞게 글을 풀어볼게요~ Concurrency 동시성은 여러 작업들을 동시에 실행할 수 있는 성질입니다. 엄밀히 말하면 싱글 코어에서 멀티 스레드를 동작시킬 수 있는 방식이니 동시에 실행되는 것 '처럼' 보이는 성질이죠. 멀티 코어 환경이 필요한 병렬성(Parallelism)과 자주 비교되는 개념이지만 이 글에서는 다루지 않을게요! 작업들은 스레드에서 실행이 됩니다. 아래 그림에 비유해보자면 차 = 작업, 차선 = 스레드 라고 볼 수 있겠네요. 보시다시피 버스전용차로는 뻥 뚫려있는 반면 일..
Frame과 Bounds는 UIView의 CGRect로 표현되는 instance property들로, 위치와 관련 된 값을 알고 싶을 때 사용합니다. 이들의 값은 아래 표와 같이 정리할 수 있는데요, Frame Bounds 좌표 superview에 의해 좌표 결정 자기 자신만의 좌표계 사용 크기(width, height) 자신과 외접하는 최소 사각형의 width, height 자기 자신의 width, height 좌표 위 표에 의하면 frame의 좌표는 superview에 의해 결정되고 bounds는 자신의 좌표계를 사용한다고 쓰여있습니다. 왼쪽, 오른쪽 그림 모두 같은 위치에 같은 UIView가 그려져있는데요, Frame은 superview의 (70, 40) 떨어진 위치에 있기 때문에 좌표가 (70, ..
URLSession은 네트워크 요청을 통해 데이터를 주고 받을 수 있도록 Apple에서 제공하는 networking API 입니다. HTTP-/HTTPS-를 베이스로 한 몇 가지 프로토콜을 지원하며 캐시 관리, 인증 그리고 쿠키 관리등도 지원합니다. 일반적으로 URLSession은 다음과 같은 순서로 진행이 됩니다. 1. session configuration and create session 2. create task 3. decide usage of completion handler / delgeate method 4. execute/resume task 5. execute completion handler after task completion [Session Configuration & Creat..
저도 필요에 따라 prepareForReuse를 잘 쓰고 있는데요, 지난 블로그 포스팅에서도 몇 번 언급을 했었어요. 1. [Rx] Resuable Cell의 흔적이 남는다 [바로가기] 2. [Toy] collectionview의 cell이 업데이트가 잘 안된다 [바로가기] 제목에서도 두 글의 공통점이 보이지 않나요?ㅎㅎ 첫 번째는 UIScrollView를 상속하는 view들의 cell과 관련 된 이야기라는 것(UITableView, UICollectionView)이고 두 번째는 변화에 대한 대응이 문제가 되는 순간들이죠. 재사용 되는 cell을 dequeue 할 때 이전에 사용 되었던 흔적이 남을 때 prepareForReuse를 통해 해결을 하곤 했는데요, 정확히 어떠한 이유로, 어떤 목적을 위해 만..
- Total
- Today
- Yesterday
- 졸업작품
- 부스트캠프
- 부스트캠프2020
- 알고리즘
- 소프트웨어역량시험
- OS
- nosql
- 컴과졸작
- 삼성
- 운영체제
- SWIFT
- 컴공졸작
- ios
- firebase
- 개발자인턴
- 데이터분석
- 보안
- C++
- swacademy
- 코딩테스트
- 삼성소프트웨어아카데미
- 컴퓨터공학
- 부캠
- TableView
- RxSwift
- 커넥트재단
- 프로그래머스
- 인턴
- 코테
- 소프트웨어아카데미
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |