우리가 iOS 앱 개발을 하면서 정말 많이 쓰는 뷰중 한가지가 콜렉션뷰 아닐까 싶은데요! 그래서 오늘은 UICollectionView를 정리하려 합니다. 먼저 당연한 말이지만, UICollectionView가 뭔지 알아야 겠죠? UICollectionView는 여러 데이터를 관리하고 커스텀 가능한 레이아웃을 사용해서 사용자에게 보여줄 수 있는 객체입니다. 보시면, UITableView처럼 UIScrollView를 상속받고 있는 것을 볼 수 있네요 ㅎㅎ 컬렉션뷰는 테이블뷰와 마찬가지로, UICollectionViewCell을 사용하여 데이터를 화면에 표현합니다. 그 외에 Supplementary view(Section header, footer)를 지원 함으로써 다음과 같이 셀을 구분하여 표현 가능 합니다..
오늘은 열거형에 대해 알아보려 합니다!! 열거형 열거형(Enumerations) - 연관된 값을 그룹지어 정의 한 것으로, 코드 안에서 type-safe한 방식으로 그 값들을 사용할 수 있게 해줌. 예) 동서남북 등.. - 특징 enum자체가 하나의 데이터 타입 각 case는 그 자체가 고유한 값 case의 경우 한 줄에 여러개 정의 가능 enum CompassPoint { case north case south case east case west } 이런식으로 한 줄 한 줄 case 작성해도 되고 enum Planet { case mercury, venus, earth, mars, jupiter, saturn, nranus, neptune } 이렇게 한 줄 작성도 가능 합니다 ㅋ ● 열거형 사용 위에서..
구조체 구조체(structure) - 타입이 다른 데이터를 하나로 묶는 방법 ● 구조체 선언 // 구조체 선언 struct person { char name[10]; int age; float height; }; // 구조체 변수 선언 struct person a; ● typedef를 이용한 구조체 선언 (typedef를 사용하면, 구조체 변수를 선언할 때, struct를 붙이지 않아도 됩니다.) // typedef를 이용한 구조체 선언 typedef struct person{ char name[10]; int age; float height; } person; // 구조체 변수 선언 person a; ● 자체참조 구조체 (필드 중에 자기 자신을 가리키는 포인터가 한 개 이상 존재하는 구조체) typed..
순환 순환 (재귀) - 알고리즘이나 함수가 수행 도중에 자기 자신을 다시 호출하여 문제를 해결하는 기법 예) 팩토리얼 값 구하기, 피보나치수열, 하노이 탑 등... 순환호출을 사용하여 factorial 구하기 int factorial(int n) { if(n 무한정 호출, 프로그램이 종료되지 않음 순환(recursion)과 반복(iteration)의 차이 순환 - 순환 호출 이용, 순환적인 문제에 자연스러움, 함수 호출의 오버헤드 발생 가능성 반복 - 수행속도가 빠름, 순환적인 문제에 대해서 프로그램 작성이 어려움 모든 순환은 반복으로 바꾸어 작성이 가능합니다 But!!, 매우 불편하거나 어려운 경우가 많습니다. ㅎ 순환(recursion)의 작동 원리 순환호출의 경우 복귀 주소를 시스템 스택에 저장하고..
우리 주변을 살펴보면 많은 부분에 있어 규칙이 정해져 있고, 조직화되어 있는 것을 볼 수 있습니다. 이렇게 하는 이유는, 효율적이기 때문인데요. 예를 들면 해야할 일을 리스트로 정리한다던가, 매표소에서 줄을 서서 구매하는 것 등등 여러 가지가 있습니다. (만약 매표소에서 줄을 서지 않고 표를 구매할 수 있다면, 엉망진창이 되겠죠?) 일상에서 볼수 있는 예와 자료구조를 비교해보면 아래와 같이 나타 낼 수 있습니다. 우리가 만들게 되는 프로그램은 적절한 자료구조와 알고리즘으로 이뤄집니다. 그래서 많은 회사들이 자료구조와 알고리즘을 중요하게 생각하는 것이죠! 만약 최대값을 찾는 프로그램을 작성한다고 가정해봅시다. 최댓값을 찾는 프로그램의 경우 다양한 방법이 있겠지만, 배열이라는 자료구조와 순차탐색이라는 알고리..
UIView는 사용자에게 보여지고 상호작용하는 부분인 만큼 정말 중요하다고 할 수 있는데요. 그래서 오늘은 정말 기초적이면서도 중요한 UIView에 대해 살펴보려 합니다. UIView는 UIResponder를 상속받는 class로 스크린 안의 여러 content를 관리하는 객체입니다. 여기서 UIResponder는 이벤트를 응답하고 처리하는 class 입니다. (touchesBegan 등등..) View는 사용자와 인터렉션하는 가장 주된 방식임으로 그에 따른 다양한 책임을 갖습니다. 뷰 그리기, subview 관리, 이벤트 핸들링 등등.. 그리고 뷰는 다른 뷰 안에 중첩되어 뷰 계층을 생성 할 수 있고(부모 뷰 - 자식 뷰 관계), 이는 연관된 콘텐츠를 구성하는데 있어 더 편리한 방법을 제공해 줍니다. ..
오늘 정리해볼 내용은 바로 바로 바로 ~~~ 대표적인 디자인 패턴 중 하나인 MVC입니다. ㅎㅎ 프로그램을 만들때 이러한 디자인 패턴을 따르는 이유는 유지보수를 쉽게 하기 위함인데요. 여러 디자인 패턴 (MVC, MVP, MVVM.. 등등)중 가장 기초적이며 Apple이 권장하는(?) MVC 패턴은 Model - View - Controller의 줄임말입니다. Model: 데이터에 관한 로직 담당 (데이터 값 변경 및 관리) View: 사용자에게 보여지는 화면 담당 (UI) Controller: Model과 View 연결 (Model 값을 View에 보여줌) MVC 패턴에서 중요한 부분! View와 Model은 절대로 서로에게 접근하면 안됩니다. 위 사진에 나오는 것처럼 Model과 View는 Contr..
알고리즘에는 시간복잡도라는 것이 있는데요. 코드를 다 작성하고 나서, 점근적 표기법인 빅오 표기법(Big-O notation)을 사용하여 대략적인 수식으로 시간복잡도를 나타낼 수 있습니다. 하지만, 만약 실제로 자신이 작성한 알고리즘이 얼마만큼의 시간이 걸리나 측정해보고 싶다면 어떻게 해야 할까요?? 방법은 정말 간단합니다. 여러 언어들이 시간 관련 프레임워크나 모듈을 제공 할텐데, 저는 파이썬 기준으로 설명드리겠습니다. 파이썬에는 time 모듈이 있는데요. 이 모듈의 time 메서드를 사용하시면 됩니다 ㅎㅎ (쉽죠??) 오늘 시간 측정을 해보기 위해 사용할 녀석은 정렬입니다. 정렬을 하는 방법에는 정말 다양한 방법이 존재 하는데요. 그래서 어떻게 알고리즘을 작성하느냐에 따라서 시간복잡도도 달라지게 됩니..
오늘은 정말 정말 중요하면서도 기초적인 개념이라 할 수 있는 Struct와 Class에 대해 알아보려 합니다! Struct & Class 공통점 1. 프로그래머가 데이터를 용도에 맞게 묶어서 표현하는데 있어 용이하다! 2. 프로퍼티와 메서드를 사용하여 구조화된 데이터와 기능을 가질 수 있다. 3. 초기화 될때 상태를 지정하기 위한 initializer 정의 가능 4. extension을 사용하여 확장 가능 5. protocol 채택 가능 Struct & Class 차이점 1. Struct - value type (값 타입), Class - reference type(참조 타입) 2. Struct는 상속 불가 & 타입 캐스팅 불가 3. Reference Counting(참조 횟수 카운트)은 Class 인스..
오늘은 Access Control에 대해 공부하고 정리해보려 합니다. 자주 보고 접했던 것들인데, 제대로 공부해보거나 사용해본 적이 없는 것 같네요 == docs.swift.org/swift-book/LanguageGuide/AccessControl.html#//apple_ref/doc/uid/TP40014097-CH41-ID3 Access Control — The Swift Programming Language (Swift 5.3) Access Control Access control restricts access to parts of your code from code in other source files and modules. This feature enables you to hide the im..