목록iOS (133)
k-coding
실제 디바이스가 없을 경우 할 수 있는것과 없는 것 오늘은 면접에서 주로 질문으로 등장하는 실제 디바이스가 없을 경우 할 수 있는것과 없는것에 대해서 알아보겠습니다. 저같은 경우가 사용하는 핸드폰이 안드로이드이고, 아이폰 공기계가 없는만큼 저한테 중요한 내용이겠네요 ㅠㅠ.. 실제 디바이스가 없으면 내가 작성한 코드를 Xcode에 시뮬레이터로만 사용할 수 있다는 이야기인데요. 한번 이 시뮬레이터의 한계를 알아보겠습니다. 시뮬레이터만으로 할 수 없는 것 Mac에서 실행되는 앱이기 때문에 CPU, 메모리 및 네트워크 연결을 포함한 컴퓨터의 리소스에 액세스 합니다. 따라서 모바일 장치에서 발견되는 리소스보다 빠를 수 있어 정확한 앱의 성능, 메모리 사용량 및 네트워크 속도를 테스팅할 수 없습니다.(즉, Mac성..

iOS - Bounds 와 Frame frame 과 bounds는 둘다 UIView에서 사용되는 친구들로 extension UIView { open var frame: CGRect open var bounds: CGRect } CGRect를 이용하여 View의 위치와 크기를 나타냅니다. 이 두개는 아주 똑같아보이지만 차이점이 존재하는데요 하나의 뷰를 만들고 그 뷰의 각각 frame과 bounds를 찍으면 다르게 나온답니다. 그 이유가 무엇일까요? 간단하게 설명하자면 frame은 SuperView라는 상위 뷰의 좌표시스템안에서 View의 위치와 크기를 나타냅니다. 반면 Bounds는 View의 위치와 크기를 자신만의 좌표시스템안에서 나타냅니다. 조금더 복잡하게 생각될 수 도 있겠지만, frame의 예제를 ..
보호되어 있는 글입니다.
CoreData (2) 오늘은 CoreData의 개념에 대해서 좀 더 알아보겠습니다. 이전 포스트에서 CoreData는 DB가 아님을 학습했었습니다. CoreData의 특징, 개념 1 ) Entity(데이터가 저장될 구조)를 통해 데이터 저장 구조 정의 - 테이블을 통해 데이터 저장 구조를 정의하는 다른 DB들과 다름 - Entity 구성 - Attribute : Entity의 하위 속성 - Relation : Entity끼리의 관계 - Fatched Properties. : 템플릿 형태로 만들어 놓은 것 2 ) In - Memory 방식 존재 - 사용하려는 모든 데이터는 메모리에 우선 로딩되는 과정 - 영구 저장소를 사용하지 않고 인메모리 방식으로만 사용이 가능 3 ) 데이터를 객체로 취급 - 하나의 ..

캘린더를 설치하기위해서 Pod을 install 해주는데 만난 위험한 문장.. 네...? 뭔가 엄청 위험해보이는 문구가 떴다... 이것도 M1이라서 환경차이로 나오는 문제라고 한다.. M1이 더 불편하네요 ㅠ 루비 인터프리터 혹은 확장 라이브러리에서 버그 발생!!! 해결법은 두줄입니다. $ sudo arch -x86_64 gem install ffi $ arch -x86_64 pod install ffi 를 설치해주시고 pod install해주시면 정상적으로 pod이 install됩니다.
개발하려고 HomeBrew를 설치하려하는데 자꾸 brew가 안깔렸다는 에러가 발생... HomeBrew가 자꾸 깔리지않아서 너무나 당황해서 인터넷 서핑... M1은 설차법이 다르더군요.. ㅠ M1에서 HomeBrew 설치법입니다. 1 ) /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 를 설치 2) 환경변수 추가 vi ~/.zshrc를 입력 insert로 변환 페이지 하단에 export "PATH=/opt/homebrew/bin:$PATH" 을 추가 wq!를 이용해 저장 후 강제종료 3) source ~/.zshrc를 쳐줘서 마지막 설정 이 과정을 완료하면 M1에서 HomeBrew가..

CoreData ( 1 ) 이번 포스팅에서는 iOS에서 디바이스에 데이터를 저장할 수 있는 수단중에 하나인 CoreData에 대해서 알아보겠습니다. 이전의 알아보았던 UserDefaults나 Realm과 비슷한 역할을 해주는데, CoreData는 framework입니다. 즉, 데이터베이스가 아닙니다. userDefaults보다 더 복잡한 내용을 영구적으로 저장하기 위해서 많이 사용됩니다. 위에서 CoreData가 DB는 아니라고 말씀 드렸는데요. CoreDat의 기능 중 하나 인 Persistence는 관계형 DB인 SQLite에 의해 지원됩니다. CoreData는 영구적으로 데이터를 저장하기 위해 많이 사용되는데, Persistence는 CoreData의 기능 중 하나이지, CoreData가 DB는 아..

Swift 합병 정렬 해보기 (Merge Sort) 오늘은 분할 정복중에서 합병 정렬에 대하여 알아보겠습니다. 합병 정렬이란? 합병 정렬은 이전 포스팅에서 알아보았던 분할 정복중 하나로 마찬가지로 재귀 함수를 이용해서 분할을 합니다. 합병 정렬의 과정은 다음과 같습니다. 1 ) 리스트의 길이가 0 혹은 1이면 이미 정렬된 리스트로 간주합니다. 2 ) 그렇지않은 리스트는 리스트를 절반으로 잘라 비슷한 크기의 두 부분 리스트로 나눕니다. 3 ) 각 부분 리스트를 재귀적으로 합병 정렬을 이용하여 정렬합니다. 4 ) 두 부분 리스트를 다시 합병하여 정렬된 리스트로 만듭니다. 라는 과정을 걸치게 됩니다. 합병 정렬도 퀵 정렬과 마찬가지로 분할 / 정복 / 결합 의 과정을 걸칩니다. 다음과 같은 정렬이 있습니다. ..

Swift 퀵 정렬 해보기 (Quick Sort) 이번엔 퀵 정렬을 알아보도록 하겠습니다. 분할 정복이란? 퀵 정렬을 알기전에 먼저 분할 정복을 간단히 알고 들어가야합니다. 분할 정복은 여러 알고리즘의 기본이 되는 해결방법으로, 엄청나게 크고 방대한 문제를 조금씩 나누어가면서 용이하게 풀 수 있는 단위로 나눈 다음 그것들을 다시 합쳐서 해결하는 개념입니다. 위 그림을 보면 이해가 되다싶이 분할정복은 간단하게 분할하고, 정복하고, 조합하는 과정을 거치면서 문제를 해결하는 방법입니다. 분할: 문제를 더이상 분할할 수 없을 때까지 동일한 유형의 여러 하위 문제로 나눈다. 정복: 가장 작은 단위의 하위 문제를 해결하여 정복한다. 조합: 하위 문제에 대한 결과를 원래 문제에 대한 결과로 조합한다. 퀵 정렬이란? ..

Swift 삽입 정렬 해보기 (Insertion Sort) 이번 포스트에서는 삽입 정렬을 알아보겠습니다. 삽입 정렬이란? 삽입정렬이란 버블, 선택 정렬처럼 데이터를 정렬하기 위한 방법중 하나로, 다음과 같은 과정을 걸치게 됩니다. 두번째 정렬부터 시작하여, 시작된 요소의 앞에있는 요소들과 비교하며 선택된 요소의 값이 더 작다면 위치를 바꾸고, 해당 과정을 자신보다 값이 작은 요소를 만나기 전까지 반복한다. 자 글보다는 쉽게 에시로 알아봅시다. 이전 포스팅과 마찬가지로 아래와 같은 배열이 있습니다. 1. 두 번째 요소인 3부터 시작하여서 앞의 값 4와 비교 -> 4 > 3 이므로 위치 변경 2. 시작 지점인 3이 제일 앞 위치에 도착하여서 루프 종료 3. 세 번째 지점인 9부터 시작 앞의 값 4와 비교 -..