본문 바로가기

분류 전체보기

(47)
[스위프트로 알고리즘 풀기] 런타임 에러가 발생하는 이유 스위프트로 프로그래머스 문제들을 풀던 와중 런타임에러로 인해 문제가 발생했다. 런타임 에러는 프로그램이 비정상적으로 종료될때 나타나는 에러로서 배열에 할당된 크기를 넘어서 접근했을 때 전역 배열의 크기가 메모리 제한을 초과할 때 지역 배열의 크기가 스택 크기 제한을 넘어갈 때 0으로 나눌 때 라이브러리에서 예외를 발생시켰을 때 재귀 호출이 너무 깊어질 때 이미 해제된 메모리를 또 참조할 때 프로그램(main 함수)이 0이 아닌 수를 반환했을 때
[SWIFT] 고차함수(Higher-order Function) map{}, filter{}, reduce{}, forEach{}, compactMap{}, flatmap{} 고차함수란? 함수를 파라미터로 사용하거나, 함수의 실행결과로 함수를 리턴하는 함수 f(f(x)) - Sequence, Collection 프로토콜을 따르는 컬렉션( 배열, 딕셔너리,세트 등)에 기본적으로 구현되어있는 함수이다 + Optional type도 구현되어 있음 1) 배열.map { 클로저 (함수) } 기존 배열 등의 각 아이템을 새롭게 매핑하여 새로운 배열을 리턴하는 함수 ( 배열의 아이템을 한개씩 던져주어 함수 내의 함수가 실행한다 ) let numbers = [1, 2, 3, 4, 5] newNumbers = numbers.map { "숫자: \($0)" } print(newNumbers) 실행 결과 : ["숫자: 1", "숫자: 2", "숫자: 3", "숫자: 4", "숫자: 5"] 2) ..
[Xcode trouble shooting] NoBuildableEntriesError 해결 이 에러를 해결할 수 있는 방법에는 1) 프로젝트 생성 시 Unit Test Option 해제 2) sudo xcodebuild -license 입력 후 라이센스 동의 3) iCloud Drive가 아니고, root 권한을 가지고 있는 로컬 폴더 생성 후 해당 폴더에서 작업 이 있다. 이때 내가 사용한 방법은 2번이다 . 라이센스를 허용해주기 위해 터미널에 들어가 % sudo xcodebuild -license 이 명령어를 적었으나 xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instan..
[SWIFT] 생성자 1️⃣구조체 생성자 - 여러개의 지정 생성자를 구현 - 오버로딩 지원 2️⃣클래스 생성자 📍지정생성자(designated) (class, struct, enum) - init(..)형태 - 모든 저장 속성을 초기화 해야함 (옵셔널 가능) - 반드시 재정의해야함 📍편의생성자(convenience) (only class) - 모든 저장 속성을 초기화 할 필요가 없음 - 개발자가 편리하게 객체를 만들어 낼 수 있도록 해주는 장치 - 저장속성의 기본값을 설정할 수 있다 (모든 저장 속성을 설정하지 않아도 된다) - 상속이 되지 않는다 편의 생성자로 만드는 것이 복잡도나 실수를 줄일 수 있다 가능한 지정생성자의 갯수를 줄이고, 편의생성자에서 지정생성자를 호출하도록 하는 것이 좋다 생성자의 상속 - 생성자는 모든 ..
[SWIFT] 초기화 초기화 ? ➕인스턴스를 생성하는 과정 ➕저장속성에 대한 초기값을 설정해서 인스턴스를 사용가능한 상태로 만드는 것 방법 ? ➕저장속성의 선언과 동시에 값을 저장 ➕저장속성을 옵셔널로 선언 (var로 선언해야함) ➕생성자에서 값을 초기화 컴파일러는 기본 생성자를 자동으로 생성함 구조체는 저장속성이 기본값이 있더라도 추가적으로 Memberwise 이니셜라이저를 자동으로 제공함 ❓멤버와이즈 이니셜라이저 ❓ - 멤버와 관련된 생성자 - 모든 저장 속성 가능한 생성자
[SWIFT] 클래스의 상속 상속? 부모클래스의 멤버(속성, 메소드)를 사용할 수 있게 만드는 문법 재정의 (overrriding) ? 부모클래스에 있는 속성 및 메소드를 재정의 하려면 overriding 키워드 사용해야 함 저장속성 ➕원칙적으로 불가능 ( 고유의 메모리 공간이 있기 때문) ➕ 메소드 형태로 추가는 방식의 재정의는 가능 - 기능 축소는 불가능 (읽기/ 쓰기에서 -> 읽기 불가능) ➕ 속성감시자를 추가 가능 계산속성 ➕실질적 메소드임 ➕메소드 형태로의 재정의 가능 - 기능 축소는 불가능 생성자 ➕ 상속되지 않고 재정의하는 것이 원칙 (생성자는 모든 저장속성을 초기화하기 때문에 서브클래스에 대한 최적화가 안됨) 메모리 구조 ) 저장속성 📍서브클래스의 저장속성은 상위 저장속성을 참조하고 있기때문에 재정의는 불가능하고 데이..
[SWIFT] 저장속성 , 계산 속성 , 타입속성 , 속성감시자 import UIKit import Foundation struct Human { // 1. 저장속성 // 아래 코드에서는 기본값이 설정 안되어있음 var name : String var height : Double var weight : Double // 1.1 지연저장속성 // 자연 저장 속성으로 선언되는 속성이 다른 저장 속성을 이용해야 할떼 // 초기화 시점이 더 늦으므로, 먼저 초기화되는 저장 속성을 사용 가능 lazy var bmi = weight * pow(height, 2) / 10000 // 2. 계산 속성 // 속성의 형태를 가진 메서드 (일반적으로 다른 저장 속성에 의존한 결과로 나오기 떄문) var bmi2 : Double { // 프로그래머 입장에서 값을 받는 것 get{ retu..