Swift 38

Swift의 순환 참조 문제에 대해

예전에 있었던 면접에서 순환 참조가 잘 일어나는 상황에 대해 질문을 받은 적이 있다. 그 때 단순히 weak와 strong의 차이에 대해서만 줄줄이 읊은 기억이 있는데.. 정리를 좀 해야겠다 싶었다. 클래스 인스턴스 사이의 강력 순환 참조(Strong Reference Cycle) : 두 클래스 인스턴스가 서로 강력 참조를 쥐고 있다면, 각 인스턴스는 서로 살게 유지한다. ex) class Person { let name: String init(name: String) { self.name = name } var apartment: Apartment? deinit { println("\(name) is being deinitialized") } } class Apartment { let number: I..

[프로그래머스] 메뉴 리뉴얼 (python) - 2021 KAKAO BLIND RECRUITMENT

1. 문제 설명 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 새로운 메뉴를 제공하기로 결정했습니다. 어떤 단품메뉴들을 조합해서 코스요리 메뉴로 구성하면 좋을 지 고민하던 스카피는 이전에 각 손님들이 주문할 때 가장 많이 함께 주문한 단품메뉴들을 코스요리 메뉴로 구성하기로 했습니다. 단, 코스요리 메뉴는 최소 2가지 이상의 단품메뉴로 구성하려고 합니다. 또한, 최소 2명 이상의 손님으로부터 주문된 단품메뉴 조합에 대해서만 코스요리 메뉴 후보에 포함하기로 했습니다. 예를 들어, 손님 6명이 주문한 단품메뉴들의 조합이 다음과 같다면, (각 손님은 단품메뉴를 2개 이상 주문해야..

Problem Solving 2021.01.25

Core Animations 학습하기 - PieGraph

프로젝트 중 흥미롭게 학습한 부분이 있어 기록해보았다. 참고: https://www.tnoda.com/blog/2019-06-18/ 베지어 곡선이란? - n개의 점으로부터 얻어지는 n-1차 곡선 애플에서 제공하는 UIBezierPath를 활용하여 지출에 대한 파이차트를 그려보기로 하였다. 자판기 구현 프로젝트 때 활용했던 방법보다는, 애니메이션을 적용하여 active한 UI를 나타내보고자 한다. VC에서 animate 메소드 호출 override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) reportPieChartView.slices = setupSlices() reportPieChartView.animateChart() }..

👩🏻‍💻/iOS 2020.12.11

Swift Card Flip 애니메이션 구현하기

iOS 앱을 만들때, 애니메이션을 적용시키는 것이 생각보다 간단한 방법이길래 소개해본다. 1. Xcode - Single View App 프로젝트를 생성한다. 2. Asset 에 전환시킬 사진을 업로드한다. 3. Storyboard로 가서 이미지가 보여질 ImageView와 Button을 생성한다. 4. Contraints를 걸어준다. (시뮬레이터가 바뀌어도 View들을 고정시킬 수 있다.) 5. command+option+control+enter 키로 Assistant Editor를 켜고 control 을 누른 상태로 ImageView를 보조편집기로 끌어온다. 6. Button은 마우스 우클릭을 한 후 Touch Up Inside 를 끌어서 보조 편집기에 마찬가지로 추가한다. 7. ViewControl..

👩🏻‍💻/iOS 2020.09.12

[프로그래머스] 위장 - 해시 (Swift/Python)

1. 문제 설명 스파이들은 매일 다른 옷을 조합하여 입어 자신을 위장합니다. 예를 들어 스파이가 가진 옷이 아래와 같고 오늘 스파이가 동그란 안경, 긴 코트, 파란색 티셔츠를 입었다면 다음날은 청바지를 추가로 입거나 동그란 안경 대신 검정 선글라스를 착용하거나 해야 합니다. 종류 이름 얼굴 동그란 안경, 검정 선글라스 상의 파란색 티셔츠 하의 청바지 겉옷 긴 코트 스파이가 가진 의상들이 담긴 2차원 배열 clothes가 주어질 때 서로 다른 옷의 조합의 수를 return 하도록 solution 함수를 작성해주세요. 2. 제한사항 clothes의 각 행은 [의상의 이름, 의상의 종류]로 이루어져 있습니다. 스파이가 가진 의상의 수는 1개 이상 30개 이하입니다. 같은 이름을 가진 의상은 존재하지 않습니다...

Problem Solving 2020.08.25

UIKit란?

본 게시글은 edwith 부스트코스 iOS 프로그래밍 강의를 듣고 작성한 게시글 입니다. UIKit란? UIKit은 iOS 애플리케이션의 사용자 인터페이스를 구현하고 이벤트를 관리하는 프레임워크이다. UIKit 프레임워크는 제스처 처리, 애니메이션, 그림 그리기, 이미지 처리, 텍스트 처리 등 사용자 이벤트 처리를 위한 클래스를 포함한다. 또한 테이블뷰, 슬라이더, 버튼, 텍스트 필드, 얼럿 창 등 애플리케이션의 화면을 구성하는 요소를 포함한다. UIKit 클래스 중 UIResponder에서 파생된 클래스나 사용자 인터페이스에 관련된 클래스는 애플리케이션의 메인 스레드(혹은 메인 디스패치 큐)에서만 사용해야 한다. UIKit은 iOS와 tvOS 플랫폼에서 사용한다. UIKit 기능별 요소 사용자 인터페이..

👩🏻‍💻/iOS 2020.07.12

Cocoa Touch 프레임워크란?

본 게시글은 edwith 부스트코스 iOS 프로그래밍 강의를 듣고 작성한 게시글 입니다. 코코아 (API) 코코아는 애플 고유의 객체 지향 응용 프로그램 환경으로 맥 OS X의 운영 체제를 위한 것이다. 맥 OS X에는 크게 카본, 이식 가능 운영 체제 인터페이스 (BSD 환경을 위함), X11, 자바의 다섯 가지 API가 있다. 코코아 터치 아이폰, 아이패드 및 아이팟 터치용 API이다. 애플이 개발하여 개발자들에게 제공하고 있다. 다른 말로, 코코아 터치 계층(Cocoa Touch Layer)이라고도 한다. 그래픽 사용자 인터페이스를 구현하는, 이벤트-구동(event-driven) 기법을 쓰는 아이폰 및 아이팟 터치용 응용 소프트웨어는 보통 코코아 터치 계층에 기반하여 작성된다. 또한, 사용자 전화번..

👩🏻‍💻/iOS 2020.07.08

AVFoundation, Timer란?

본 게시글은 edwith 부스트코스 iOS 프로그래밍 강의를 듣고 작성한 게시글 입니다. AVFoundation Objective-C 및 Swift의 API가 포함 된 멀티미디어 프레임 워크로, Apple Darwin 기반 운영 체제 (iOS, macOS, tvOS 및 watchOS)에서 시간 기반 시청각 미디어 작업을 위한 고급 서비스를 제공한다. 주요 기능 미디어 재생 및 편집(QuickTime 동영상 및 MPEG-4 파일 재생/생성/편집, HLS 스트림 재생: 재생가능 파일 목록 링크) 디바이스 카메라와 마이크를 이용한 영상 녹화 및 사운드 녹음 시스템 사운드 제어 문자의 음성화 AVAudioPlayer Class 파일 또는 메모리에 있는 사운드 데이터를 재생하는 기능을 제공 파일 또는 메모리에 있..

👩🏻‍💻/iOS 2020.07.08

UIButton, UISlider, UILabel이란?

본 게시글은 edwith 부스트코스 iOS 프로그래밍 강의를 듣고 작성한 게시글 입니다. UIButton, UISlider, UILabel 애플리케이션 화면을 구현할 때 자주 사용하는 UI요소들이다. 1. UIButton 사용자의 상호작용(터치/탭 등의 이벤트)에 반응해 미리 지정된 코드를 실행하는 컨트롤 요소 버튼 생성의 3단계 버튼을 생성하고 버튼의 유형을 선택 버튼을 나타내기 위한 문자(타이틀)을 입력하거나, 이미지를 설정한 뒤 크기를 조정 버튼에 특정 이벤트가 발생할 때 작동할 하나 이상의 메서드를 연결 버튼과 메서드 연결하는 방법 addTarget(_:action:for:) 메서드 사용 인터페이스 빌더에서 연결 (@IBAction) 이때 버튼과 연결되는 메서드 형식은 아래와 같다. func do..

👩🏻‍💻/iOS 2020.07.07

부스트코스 - iOS 프로그래밍을 위한 스위프트 기초 강의 수료 및 후기

iOS 공부를 하기로 마음 먹고 첫걸음으로 듣기 시작한 첫 강의를 수강완료했다. 이 강의에서 권장한 수강 기간은 약 2달 정도인데 일주일 조금 넘게동안 조금은 빠르게 수료 해버렸다. 생각보다 강의 양도 많지 않았고, 기초이기 때문에 다른 언어에서 공부했던 문법이나 내용과 비슷한 부분이 많아서 어렵지 않게 공부할 수 있었다. 물론 스위프트에는 강의에서 들은 내용 뿐 아니라 훨~~씬 더 많은 기능들이 있겠지만, 프로젝트를 하며 공부를 하면 괜찮을 거라는 생각을 했다. 워낙 이론 위주로 공부를 하면 잘 안들어오는 타입이기도 하고, 학부때부터 느꼈지만 직접 구현하면서 스스로 찾고 공부하는게 기억에 더 잘 남는다. 동영상 강의 하나하나가 길지 않다. 오히려 짧다고 하면 매우 짧다. 3분~10분 사이로 이루어져 있..

잡담 2020.06.24