안녕하세요! 오늘은 타입캐스팅에 대해 배워보았습니다. 타입캐스팅이란? 인스턴스의 타입을 확인하거나 인스턴스를 같은 계층에 있는 다른 상위 클래스나 하위 클래스로 취급하는 방법 (출처: 공식 문서) 인스턴스의 타입을 확인하거나 인스턴스 자신의 타입을 다른 타입의 인스턴스인 것처럼 사용할 때 활용되는 개념입니다. 쉽게 말해서, 1) 인스턴스의 타입을 확인할 수 있고 2) 인스턴스의 타입을 (일시적으로) 바꿔줄 수 있는 것이 타입캐스팅입니다! 공식 문서의 예제 코드로 복습해보겠습니다. 기본 코드 작성 우선 base 클래스 MediaItem을 정의해주고, MediaItem을 상속받는 Movie, Song이라는 클래스를 정의해줍니다. // base class 인 MediaItem을 정의해준다. class Medi..
모듈화와 프레임워크, 접근 제어에 대해 알아보자. 모듈화란? 모듈: 프로그램을 기능별로 분할한 논리적인 일부분 모듈이란 쉽게 설명하자면 코드의 묶음 단위이다. 하나의 프레임워크나 라이브러리, 애플리케이션을 모듈이라고 할 수 있다. 모듈화를 이해하기 위해서는 다음과 같은 예시를 들 수 있겠다. 하나의 회사가 다양한 앱을 만들어 공통적으로 사용하는 기능이 많을 수 있다. 예를 들어 카카오에서 만든 카카오톡, 카카오 버스나 카카오 택시, 카카오맵 등 여러 가지 앱이 있을 수 있는데 이 때 공통적으로 같아야 하는 컴포넌트들이 있을 수 있다. (예를 들면 팝업뷰가 띄워진 모습이라든지, 버튼의 모양 등) 이들을 한데 모아 하나로 관리할 수 있는 방법이 없을까? 라는 생각에서 만들어진 개념이 바로 모듈화이다. 즉, ..
테이블뷰 안녕하세요 오늘은 테이블뷰에 대해 정리해보려고 합니다! iOS 개발에 있어서 필수로 숙지해두어야 하는 개념인 만큼 자세하게 다루어 보겠습니다 테이블 뷰란? 테이블 뷰란 단일 열에서 수직으로 스크롤되는 콘텐츠입니다. (출처: 공식 문서) 쉽게 말하자면! 하나의 열에 수직으로 쭉 데이터가 나열되어 스크롤할 수 있는 뷰라고 할 수 있을 것 같네요. 또한 하나의 행마다 앱의 데이터가 조금씩 들어가있습니다. 예를 들어, 연락처 앱에 들어가보면 사람들의 이름이 세로로 나열되어 있습니다. 한 사람의 이름을 터치하면 그 사람의 연락처 정보가 나타납니다. 여기에서 쓰인 것이 바로 테이블 뷰 TableView 라고 하고, 한 명 한 명이 들어있는 행은 셀 Cell 이라고 표현합니다. 테이블 뷰의 필요성 데이터를 ..
문제 → 해결 Invalid escape sequence in literal → String에 \같은 기호 문자 들어가있을 때 No exact matches in call to instance method 'append’ → 타입이 다를 때 (ex. Array 타입이 아닌데 append를 시도함 등) 타입을 확인해보면 됨 TableViewCell, CollectionViewCell에 API 결괏값을 넣어줄 때, 첫번째 cell의 값에는 왜 아직 안 들어가있지? → reloadData() 잘 사용하기! Unexpectedly found nil while implicitly unwrapping an Optional value → nib 연결 안해줬거나 tableView.dequeueReusableCell 안..
안녕하세요! 오늘은 iOS의 화면 전환에 대해 살펴보려고 합니다. 화면 전환의 필요성 앱을 개발할 때, 화면 전환이 왜 필요할까요? 생각해봅시다! 작은 휴대폰 화면에서 사용자가 한 번에 볼 수 있는 부분은 한정되어 있습니다. 설정 화면의 일반 탭을 들어가 봅시다. 아이폰의 기기 정보에 관한 것, 키보드에 관한 것, 저장공간에 관한 것 등 여러 주제로 카테고리화 된 제목들이 나타납니다. 만약 이 탭 안의 정보들이 카테고리별로 나누어져있지 않고 모두 한 화면에 나열되어 있다면 어떨까요? 설정하기를 원하는 부분을 찾는데 굉장히 오랜 시간이 걸릴 것 같네요. 이처럼 제한된 스크린 크기 내에서 적절한 정보를 제공하기 위해 화면 전환은 매우 중요한 역할을 합니다. 화면 전환 방식 애플에서는 주로 지정된 기본적인 화..
안녕하세요! ViewController 파일처럼 스토리보드도 여러 파일로 나누어서 활용해볼 수 있는데요, 오늘은 스토리보드 추가하는 방법에 대해서 간단하게 알아보려 합니다! 스토리보드 추가하기 Xcode 왼쪽 탭에서 New File 선택해주시고 Storyboard를 추가하면 됩니다! (스토리보드마다 Entry point도 존재한다는 점 알아두세요) 그런데, 스토리보드가 프로젝트에 여러 개 있을 때는 어떤 부분이 먼저 동작할까요? Main 스토리보드 말고, 이후에 만든 스토리보드를 메인으로 동작하게 하는 방법도 있을까요?? 이어서 진행해보겠습니다! 시작 스토리보드 지정하기 프로젝트 설정 - Targets - Deployment Info 에서 Main interface를 보시면 드롭다운 형태로 현재 프로젝트..
Swift의 클래스와 구조체에 대해 정리해보고자 한다. 1. 클래스 클래스 정의 // 클래스 정의 class Monster { var clothes = "Orange" var speed = 5 var power = 20 var expoint: Double = 500 func attack() { print("공격!") } } 클래스 내부에 선언된 변수를 프로퍼티, 함수를 메서드라고 부른다. 위 코드에서 clothes, speed 등이 프로퍼티, attack()이 메서드! 인스턴스 var easyMonster = Monster() // Monster 클래스의 인스턴스 정의 easyMonster.clothes // "Orange" easyMonster.speed // 5 클래스 사용을 위해 만들어지는 객체를 ..
예전 버전에서는 file → Swift Packages → Add Package Dependency 의 경로로 추가해야 했는데, 이제는 아래 사진과 같은 경로로 추가하면 된다! 참고: https://iiroalhonen.medium.com/adding-a-swift-package-dependency-in-xcode-13-937b2caaf218 Adding a Swift Package Dependency in Xcode 13 Xcode 13 brought plenty of changes to us and one of them is the new Swift Package Collections. This changed where we add Swift packages to… iiroalhonen.medium...
https://programmers.co.kr/learn/courses/30/lessons/12899 코딩테스트 연습 - 124 나라의 숫자 programmers.co.kr 문제 124 나라가 있습니다. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다. 124 나라에는 자연수만 존재합니다. 124 나라에는 모든 수를 표현할 때 1, 2, 4만 사용합니다. 예를 들어서 124 나라에서 사용하는 숫자는 다음과 같이 변환됩니다. 자연수 n이 매개변수로 주어질 때, n을 124 나라에서 사용하는 숫자로 바꾼 값을 return 하도록 solution 함수를 완성해 주세요. 제한사항 n은 500,000,000이하의 자연수 입니다. 풀이 단순히 3진법을 사용해서 풀이하면 된다고 생각..
https://www.acmicpc.net/problem/2579 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 풀이 다이나믹 프로그래밍이라 점화식부터 정하고 풀기 시작했다. N번째 계단까지의 최댓값 = max( (N-1)번째 계단까지의 최댓값(단, (N-2)번째는 포함되지 않아야 함) + N번째 계단의 값, (N-2)번째 계단까지의 최댓값(단, (N-3)번째 포함 여부는 상관 없음) + N번째 계단의 값) 직전 값의 전 값도 중요하기 때문에 dp 리스트 요소를 (0, 0) 형태로 잡았다. 점화식: dp[N] = (dp..